WPF - 使用BooleanToVisibilityConverter绑定ComboBoxItem可见性

时间:2015-07-22 16:33:38

标签: wpf xaml combobox wpfdatagrid

我有一个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

0 个答案:

没有答案