WPF 网格与孩子。如何将子 IsEnabled 绑定到父行

Posted

技术标签:

【中文标题】WPF 网格与孩子。如何将子 IsEnabled 绑定到父行【英文标题】:WPF Grid with child. How to bind child IsEnable to parent row 【发布时间】:2018-02-20 14:46:44 【问题描述】:

我是 WFP 的新手,我尝试使用 Telerik 网格和每一行的子元素。 这是我的 xaml:

<telerikGrid:RadGridView x:Name="rgvProductsMatricolari" ItemsSource="Binding CustomerProducts" ... >
    <telerikGrid:RadGridView.ChildTableDefinitions>
    ...
    </telerikGrid:RadGridView.ChildTableDefinitions>
    <telerikGrid:RadGridView.Columns>
        <telerikGrid:GridViewDataColumn x:Name="SelProductsMatricolari" Header ="" Width="Auto" TextAlignment="Center">
            <telerikGrid:GridViewDataColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox x:Name="chkProductsMatricolari" Style="StaticResource chkStandard" IsChecked="Binding IsSelected, Mode=TwoWay" HorizontalAlignment="Center"  />
                </DataTemplate>
            </telerikGrid:GridViewDataColumn.CellTemplate>
        </telerikGrid:GridViewDataColumn>
        <!-- other columns -->
    </telerikGrid:RadGridView.Columns>
    <telerikGrid:RadGridView.HierarchyChildTemplate>
        <DataTemplate>
            <Grid IsEnabled="Binding SelectedItem, ElementName=rgvProductsMatricolari" Visibility="Binding SelectedItem, ElementName=rgvProductsMatricolari, Converter=StaticResource BooleanToVisibility">
                <!-- the grid -->
            </Grid>
        </DataTemplate>
    </telerikGrid:RadGridView.HierarchyChildTemplate>
</telerikGrid:RadGridView>

如您所见,如果选择了父行的checkbox(模型为IsSelected),我想禁用并隐藏子Grid。 我对Binding SelectedItem, ElementName=rgvProductsMatricolari 有一些问题,因为点击checkbox 不要选择行。

如何将子网格“IsEnabled”属性绑定到父数据的“IsSelected”属性?

【问题讨论】:

【参考方案1】:

试试这个:

<Grid IsEnabled="Binding DataContext.IsSelected, RelativeSource=RelativeSource AncestorType=telerik:GridViewRow" ... >

【讨论】:

是的,首先添加这一行:xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"

以上是关于WPF 网格与孩子。如何将子 IsEnabled 绑定到父行的主要内容,如果未能解决你的问题,请参考以下文章

IsEnabled="False" 状态的 WPF 文本框未应用正确的背景颜色

JS/w2ui:如何使用 w2ui JavaScript UI 库将子级添加到网格?

如何将 WPF ListBoxItem 的 IsEnabled 属性绑定到其源项的属性?

如何在网格中选择一个孩子?

WPF XAML 在 IsEnabled 状态下更改图像不透明度

WPF IsEnabled 和 IsHitTestVisible