【发布时间】:2018-06-16 18:50:26
【问题描述】:
我需要根据条件动态显示或隐藏数据网格的列之一。
据我所知,列不存在于逻辑或可视数据网格树中,因此我决定将其替换为静态资源
我有什么
查看 (隐藏命名空间以便清除)
<UserControl Name="UserControl">
<UserControl.Resources>
<DataGridTemplateColumn x:Key="ProblemColumn"
Visibility="{Binding DataContext.IsDisplayed, Source={x:Reference UserControl}, Converter={StaticResource BooleanToVisibilityConverter}}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataType="myModels:SomeModel">
<DataGrid ItemsSource="{Binding SomeViewModel}">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataType="myModels:AnotherModel">
<Border>
<TextBlock Text="{Binding Text}"
VerticalAlignment="Center"
HorizontalAlignment="Right"/>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</UserControl.Resources>
<Grid>
<ScrollViewer>
<DataGrid ItemsSource="{Binding AnotherItems}">
<DataGrid.Columns >
<DataGridTemplateColumn>
...
</DataGridTemplateColumn>
<StaticResource ResourceKey="ProblemColumn"/>
</DataGrid.Columns>
</DataGrid>
</ScrollViewer>
</Grid>
视图模型 只有我的属性,我明确设置隐藏列的值
public bool IsDisplayed => false;
所以现在属性绑定正确并返回值,但 UI 上没有任何变化,数据网格中仍然存在列,即使属性的值设置为 false,我也可以看到它。
我会错过什么?
【问题讨论】: