<ListView Grid.Row="1" Margin="10" Name="lvRegistersConfig" ItemsSource="{Binding registers}">
<ListView.Resources>
<local:BoolToVisibility x:Key="BTVConverter"/>
</ListView.Resources>
<ListView.View>
<GridView>
<local:GridViewColumnExt Header="Register Name" Width="100" Visibility="{Binding Vis, Converter={StaticResource BTVConverter}}" >
<local:GridViewColumnExt.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Visibility="{Binding Vis, Converter={StaticResource BTVConverter}}"/>
</DataTemplate>
</local:GridViewColumnExt.CellTemplate>
</local:GridViewColumnExt>
</GridView>
</ListView.View>
</ListView>
GridViewColumnExt是一个继承自GridViewColumn并添加Visibility属性的类。
如您所见,我的ListView的ItemsSource被设置为ObservableCollection寄存器。 Register类有一个名为Vis的bool类型的属性。 这一切都适用于TextBox,但是从GridViewColumnExt来看,我认为我无法到达集合并绑定到特定对象。我不确定GridViewColumn的DataContext是什么,我看到我无法设置它。 我需要一个提示,我的GridViewColumn如何从寄存器ObservableCollection的Register对象中看到Vis属性?
答案 0 :(得分:0)
我不确定GridViewColumnExt
控件的工作原理,但您的XAML看起来DataContext
不会是registers
集合中的单个项目,而是声明DataContext
集合的registers
相同。因此,您可能无法使用Register.Vis
属性控制列的可见性。
如果您希望在单元格模板中添加更多内容,可以将TextBlock
打包在Grid
中并将Grid.Visibility
属性绑定到Register.Vis
属性。
这有意义吗?