我有一个WPF控件(ControlA),它引用了另一个控件(ControlB),如下所示:

<Grid>
    <controls:ControlB x:Name="ControlB"  />
    <my:DataGrid
        x:Name="dataGridBackup"
        ItemsSource="{Binding}"
        AutoGenerateColumns="False" >
        <my:DataGrid.Columns>
            <my:DataGridCheckBoxColumn
                Header="Connectable"
                Binding="{Binding Connectable}"  />
        </my:DataGrid.Columns>
    </my:DataGrid>
</Grid>


现在在ControlB中,我有一个按钮,我想将IsEnabled属性绑定到controlA上我的网格的Connectable列。

当我在同一页面上拥有控件时,而在没有上述场景的情况下,我可以使它工作。我尝试过

<Button
    IsEnabled="{Binding ElementName=dataGridBackup, Path=SelectedItem.Connectable}">
</Button>

最佳答案

ControlB中的按钮没有正常的方法来知道控件ControlB之外的内容。一种可能的解决方案是像ControlB一样向IsConnectable添加布尔依赖项属性。在控件ControlA的XAML中,像以前一样,使用路径将属性绑定到dataGridBackup。在控件ControlB的XAML中,将按钮的IsEnabled属性绑定到IsConnectableControlB

07-24 14:56