根据selectedindex设置控件的可见性?

时间:2017-11-01 14:10:31

标签: c# wpf xaml

我尝试显示基于SelectedIndex值的控件,到目前为止我做了什么:

<UserControl.Resources>
    <BooleanToVisibilityConverter x:Key="b2v" />
</UserControl.Resource>

<ComboBox Grid.Column="1" Grid.Row="4" Margin="8,0,8,16" x:Name="FormTypeFilters" SelectedIndex="0">
     <ComboBoxItem Content="All" />
     <ComboBoxItem Content="Home" />
     <ComboBoxItem Content="Away" />
</ComboBox>

所以我BooleanToVisibilityConverter提供了System.Windows.Controls,而我ComboBox有三个项目。

我还有三个DataGrid,例如我只发布声明(没有列):

<DataGrid Visibility="{Binding SelectedIndex, ElementName=FormTypeFilters, Converter={StaticResource b2v}}" />
<DataGrid Visibility="{Binding SelectedIndex, ElementName=FormTypeFilters, Converter={StaticResource b2v}}" /> 
<DataGrid Visibility="{Binding SelectedIndex, ElementName=FormTypeFilters, Converter={StaticResource b2v}}" />

我坚持这一点,我需要知道如何告诉BooleanConverter当用户选择索引0时必须显示DataGrid 1,而当用户选择索引1时需要显示Datagrid 2,等等...

1 个答案:

答案 0 :(得分:0)

您可以使用DataTrigger来设置DataGrids的可见性,而不是绑定转换器。

<DataGrid>
    <DataGrid.Style>
        <Style TargetType="DataGrid">
            <Setter Property="Visibility" Value="Hidden"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedIndex, ElementName=FormTypeFilters}"
                             Value="0">
                    <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.Style>
</DataGrid>