2016-11-08 2 views
0

У меня есть, я думаю, простой вопрос. У меня есть несколько кнопок и в зависимости от того, на какой щелкнуть, вам нужно привязать данные к моему DataGrid - например, если нажать кнопку Button1, привяжите поля A-D к сетке; если нажать кнопку Button2, привяжите поля E-J к сетке. У меня есть привязка данных, работающая нормально, но, похоже, не может интегрировать кнопки, чтобы определить, какие данные необходимо связывать. Тот же DataGrid использует независимо от того, какая кнопка нажата, но мне нужно привязать разные данные, на основе которых нажата кнопка. Есть предположения?привязка данных XAML на основе кнопки Нажмите

+0

Взгляните на этот вопрос ... http://stackoverflow.com/q/320089/512365. Идея заключается в том, что вы привязываете свои столбцы DataGrid к коллекции столбцов, которые вы можете изменить, на основе какой кнопки вы нажимаете. – KornMuffin

ответ

0
  1. Использование ToggleButton вместо Button, так как они выставляют IsChecked собственность.

  2. Объявите Freezable как <DiscreteObjectKeyFrame x:Key="A-D" Value="True"/> под Window.Resources или DataGrid.Resources.

  3. <BooleanToVisibilityConverter x:Key="BooleanToVisCnvKey"/> под Window.Resources или DataGrid.Resources.

  4. переплета Visibility из DataGridColumn к DiscreteObjectKeyFrame .Value, объявленного в (2) выше, и использовать IValueConverter для преобразования boolean в Visibility.

    <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}" /> 
    
Смежные вопросы