2017-06-06 61 views
0

我想在WPF中做一些簡單的事情,但無法找到辦法。C#WPF靜態項目和綁定組合框

我在DataGrid標題中有一個ComboBox來過濾數據。數據綁定到所有數據的GrouBy聲明。

這些數據顯示了一些複選框XAML代碼:

<DataGridTextColumn x:Name="Type" 
        Binding="{Binding TypeOfData, Mode=OneTime}" 
        SortMemberPath="TypeOfData" 
        IsReadOnly="true" 
        CanUserSort="true"> 
    <DataGridTextColumn.Header> 
     <DockPanel> 
      <Label Content="Type Of Data" 
        DockPanel.Dock="Left"/> 
      <ComboBox x:Name="comboBoxType" 
         DockPanel.Dock="Right" 
         SelectionChanged="comboBoxType_SelectionChanged">       
       <ComboBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel x:Name="itemsComboBox"> 
          <CheckBox Name="checkBoxType" 
            IsChecked="False" 
            Content="{Binding Key}" 
            Unchecked="FilterChange" 
            Checked="FilterChange"/> 
         </StackPanel> 
        </DataTemplate> 
       </ComboBox.ItemTemplate> 
      </ComboBox> 
     </DockPanel> 
    </DataGridTextColumn.Header> 
</DataGridTextColumn> 

背後脫穎而出結合的代碼是:

comboBoxType.ItemsSource = allData.GroupBy(data=> data.TypeOfData).OrderBy(grp=> grp.Key); 

這項工作。

但現在我想添加2個按鈕來檢查和取消全部在最後或ComboBox的開始,但我似乎無法找到如何將這些靜態按鈕添加到動態數據模板中。

編輯回答grek40: 我想要複選框之前或之後的組合框項目中的按鈕。

CompositeCollection可以幫助,但我似乎無法使其工作。

謝謝

+0

待辦事項的ItemsSource = {綁定...},並打造出被綁定在代碼中的ObservableCollection財產。 – kurakura88

+0

將'IsChecked'綁定到您的ViewModel並在代碼中執行。 –

+0

你可以更具體地在你想要的按鈕?這聽起來像你想要他們在組合框下拉,這可能,但可能會有點複雜。 – grek40

回答

0

Grid有幾個ColumnDefinitions更換DockPanel

<DataGridTextColumn x:Name="Type" Binding="{Binding TypeOfData, Mode=OneTime}" SortMemberPath="TypeOfData" IsReadOnly="true" CanUserSort="true"> 
    <DataGridTextColumn.Header> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="Auto" /> 
      </Grid.ColumnDefinitions> 
      <Label Content="Type Of Data" /> 
      <ComboBox x:Name="comboBoxType" 
         Grid.Column="1" 
         SelectionChanged="comboBoxType_SelectionChanged"> 
       <ComboBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel x:Name="itemsComboBox"> 
          <CheckBox Name="checkBoxType" 
             IsChecked="False" 
             Content="{Binding Key}" 
             Unchecked="FilterChange" 
             Checked="FilterChange"/> 
         </StackPanel> 
        </DataTemplate> 
       </ComboBox.ItemTemplate> 
      </ComboBox> 
      <Button Content="Check" 
        Grid.Column="2" /> 
     </Grid> 
    </DataGridTextColumn.Header> 
</DataGridTextColumn>