2017-11-01 17 views
0

私は私がこれまで何をしたか、SelectedIndex値に基づいてコントロールを表示しようとしている: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> 

ので、私はSystem.Windows.Controlsが提供するBooleanToVisibilityConverterをした、と私は三つの項目でComboBoxをしました。

私もちょうどたとえば、私は(列なし)のみ宣言とそれを投稿します、3 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

***ブール*** ToVisibilityConverter。 SelectedIndexはintです。 javascriptでさえ、これはうまくいかないでしょう。カスタムコンバータを作成し、ConverterParameterを使用して、どのインデックスがVisibleを返すかを指定する必要があります。 – Will

答えて

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> 
関連する問題