C#WPF静态项和绑定组合框
我试图在WPF中做一些简单的事情,但找不到方法来做 我在DataGrid头中有一个组合框来过滤数据。数据绑定到我所有数据的GrouBy语句 这些复选框显示了XAML代码是:C#WPF静态项和绑定组合框,c#,wpf,xaml,combobox,compositecollection,C#,Wpf,Xaml,Combobox,Compositecollection,我试图在WPF中做一些简单的事情,但找不到方法来做 我在DataGrid头中有一个组合框来过滤数据。数据绑定到我所有数据的GrouBy语句 这些复选框显示了XAML代码是: <DataGridTextColumn x:Name="Type" Binding="{Binding TypeOfData, Mode=OneTime}" SortMemberPath="TypeOfData"
<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>
还有这项工作
但是现在我想在ComboBox的末尾或开头添加2个按钮来选中和取消选中all,但是我似乎找不到如何在动态数据模板中添加这些静态按钮
编辑grek40的答案:
我希望组合框中的按钮位于复选框之前或之后
CompositeCollection可能会有所帮助,但我似乎无法让它发挥作用
谢谢将
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>
将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>
Do ItemsSource={Binding…}并在要绑定的代码隐藏中创建ObservableCollection属性。BindIsChecked
到您的ViewModel并在代码中执行。您能更具体地说明按钮的位置吗?听起来你想把它们放在组合框下拉列表中,这是可能的,但可能会有点复杂。@kurakura88我不理解你的评论。这如何帮助我添加一些静态按钮,这些按钮总是独立于我的绑定出现在组合框项目中?@grek40我更新了我的问题。我知道解决方案的某些部分可能在CompositeCollection中,但我根本无法让它工作。Do ItemsSource={Binding…}并在要绑定的代码后面创建ObservableCollection属性。BindIsChecked
到您的ViewModel中,并在代码中执行。您能更具体地说明按钮的位置吗?听起来你想把它们放在组合框下拉列表中,这是可能的,但可能会有点复杂。@kurakura88我不理解你的评论。这如何帮助我添加一些静态按钮,这些按钮总是独立于我的绑定出现在组合框项目中?@grek40我更新了我的问题。我知道解决方案的某些部分可能在CompositeCollection中,但我根本无法让它工作。