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 属性绑定到其源项的属性?