使用转换器的DataGridColumn可见性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用转换器的DataGridColumn可见性相关的知识,希望对你有一定的参考价值。
我有一个DataGrid与一个集合的Itemsource。此DataGrid显示了一些机器轴的值。有不同的列,第一个重要的是axisName。最后一个重要的是“ReferenceSetting”按钮。
按下此按钮后,将启动ReferenceSequence。现在,并非所有Axis都配置为设置引用,此按钮应折叠或隐藏。
所有已配置的轴都保存在列表中。
现在,如何将列的名称绑定到按钮列的visibility属性,并为转换器提供列表以检查配置?
谢谢你的帮助。
<DataGrid Margin="8" Style="{StaticResource CoDeDataGrid}" ItemsSource="{Binding Path=TableDataGridView}"
AutoGenerateColumns="False" IsReadOnly="True" Name="AxisGrid">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Coordinatesystem,
Converter={StaticResource EnumToDisplayTextConverter} , RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
...
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Style="{StaticResource CoDeButtonSmall}"
Command="{Binding Path=DataContext.OnSetReferenceCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding ElementName=AxisGrid, Path=SelectedItem}">
<!-- Visibility="{Binding Name, Converter={StaticResource ButtonNameToVisibilityConverter}, ConverterParameter={...Property TeachAxis of My ViewModel....}">-->
<Image Source="C:UsersPASourceReposSourceCommon.ResourcesImageResourcesTestPicture.jpg" Height="24" Width="24"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
答案
这应该做的工作
<DataGrid Margin="8" Style="{StaticResource CoDeDataGrid}" ItemsSource="{Binding Path=TableDataGridView}"
AutoGenerateColumns="False" IsReadOnly="True" Name="AxisGrid">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Coordinatesystem,
Converter={StaticResource EnumToDisplayTextConverter} , RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
...
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Style="{StaticResource CoDeButtonSmall}"
Command="{Binding Path=DataContext.OnSetReferenceCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding ElementName=AxisGrid, Path=SelectedItem}"
Visibility="{Binding Name, Converter={StaticResource ButtonNameToVisibilityConverter}, ConverterParameter={DataContext.TeachAxis}">
<Image Source="C:UsersPASourceReposSourceCommon.ResourcesImageResourcesTestPicture.jpg" Height="24" Width="24"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
以上是关于使用转换器的DataGridColumn可见性的主要内容,如果未能解决你的问题,请参考以下文章
如何绑定 DataGridColumn.Visibility?
“私有”可见性修饰符 - 将 C# 转换为 VB 时如何处理差异?