【发布时间】:2014-08-09 19:14:20
【问题描述】:
<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 类型的属性。 这一切都适用于文本框,但从 GridViewColumnExt 不,我想我无法到达集合并绑定到特定对象。
我不确定 GridViewColumn 的 DataContext 是什么,我看到我无法设置它。 我需要一个提示,我的 GridViewColumn 如何从寄存器 ObservableCollection 中的 Register 对象中看到 Vis 属性?
【问题讨论】:
-
基于单个项目的属性为整个列添加可见性绑定没有任何意义。如果第 1 项的 Vis = true 而第 2 项的 Vis = false,你是否隐藏整列?
-
@user3910810 如果该列上存在任何项目,我将显示它。我在扩展器中有我的 ListView,我正在检查扩展事件。
标签: c# wpf data-binding