我有一个Datagrid,其标题中包含一个组合框。我想根据某个标志的值来控制组合框中项目的可见性。
这就是我的XAML的样子:
<DataGrid x:Name="Table1" Height="{Binding ElementName=ElasticOne1,Path=ActualHeight}" Width="{Binding ElementName=ElasticOne1,Path=ActualWidth}" Padding="5,5,5,5" IsReadOnly="True"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SelectionMode="Single" >
<DataGrid.Columns>
<DataGridTextColumn x:Name="Column2" Header="Source" Width="80">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<StackPanel Margin="0">
<StackPanel.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis"/>
</StackPanel.Resources>
<TextBlock Text="{Binding Content, RelativeSource={RelativeSource Mode=TemplatedParent}}" Margin="5"/>
<ComboBox HorizontalAlignment="Stretch" Margin="0" >
<ComboBoxItem Tag="0" IsSelected="True">All</ComboBoxItem>
<ComboBoxItem Visibility="{Binding ShowCopybookInSourceCombobox, Converter={StaticResource BoolToVis}}">Copybook</ComboBoxItem>
<ComboBoxItem>Prototype</ComboBoxItem>
</ComboBox>
</StackPanel>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
</DataGrid.Columns>
这是代码中的标志声明:
Public ReadOnly Property ShowCopybookInSourceCombobox As Boolean
Get
Return myFlag1 Or myFlag2
End Get
End Property
无论我的旗帜是什么价值,组合框项目总是显示出来。到目前为止,我还没有看到任何以这种方式绑定组合框的可见性的例子。我走错了路吗?
感谢您的所有意见。
编辑:BooleanToVisibilityConverter是我正在使用的内置类 - https://msdn.microsoft.com/en-us/library/system.windows.controls.booleantovisibilityconverter(v=vs.110).aspx