GridViewColumn Visibility属性的绑定失败

时间:2014-08-09 19:14:20

标签: c# wpf data-binding

    <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属性?

1 个答案:

答案 0 :(得分:0)

我不确定GridViewColumnExt控件的工作原理,但您的XAML看起来DataContext不会是registers集合中的单个项目,而是声明DataContext集合的registers相同。因此,您可能无法使用Register.Vis属性控制列的可见性。

如果您希望在单元格模板中添加更多内容,可以将TextBlock打包在Grid中并将Grid.Visibility属性绑定到Register.Vis属性。

这有意义吗?