2016-11-08 11 views
0

私は、簡単な質問だと思います。私はいくつかのボタンを持っていて、どのボタンがクリックされたかに応じて、DataGridにデータをバインドする必要があります。たとえば、Button1をクリックすると、フィールドA〜Dをグリッドにバインドします。 Button2をクリックすると、フィールドE-Jがグリッドにバインドされます。データバインディングは正常に動作していますが、バインドするデータを決定するためにボタンを統合することはできません。どのボタンが押されていても同じDataGridが使用していますが、どのボタンがクリックされたかに基づいて異なるデータをバインドする必要があります。何かご意見は?ボタンに基づくXAMLデータバインディング

+0

この質問... http://stackoverflow.com/q/320089/512365を見てみましょう。データグリッドの列を列のコレクションにバインドするという考えは、クリックするボタンに基づいて変更できます。 – KornMuffin

答えて

0
  1. 代わりButtonの使用ToggleButton、彼らはIsCheckedプロパティを公開するとして。

  2. Window.ResourcesまたはDataGrid.Resources<DiscreteObjectKeyFrame x:Key="A-D" Value="True"/>ようFreezableを宣言します。

  3. <BooleanToVisibilityConverter x:Key="BooleanToVisCnvKey"/>Window.ResourcesまたはDataGrid.Resourcesに定義します。 (2)上記で宣言さDiscreteObjectKeyFrame .Value

  4. バインドDataGridColumnVisibility、及びVisibilitybooleanを変換するIValueConverterを使用します。

    <Window.Resources> 
        <DiscreteObjectKeyFrame x:Key="FlagKey" Value="False"/> 
        <BooleanToVisibilityConverter x:Key="BooleanToVisCnvKey"/> 
    </Window.Resources> 
    
    ... 
    <DataGrid> 
        ... 
        <DataGridTextColumn Visibility="{Binding Value, Source={StaticResource FlagKey}, Converter={StaticResource BooleanToVisCnvKey}}" ...> 
        ... 
    </DataGrid> 
    
    ... 
    <ToggleButton ... IsChecked="{Binding Value,Source={StaticResource FlagKey}, Mode=TwoWay}" /> 
    
関連する問題