【发布时间】:2016-07-25 06:35:06
【问题描述】:
我想在包含 ItemTemplate 的组合框中添加按钮。首先,我尝试的是这样的:
<ComboBox Name="oilWells_comboBox"
Style="{StaticResource MMComboBox}"
MaxWidth="100"
ItemsSource="{Binding DataContext.OilWellCollection, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:MainWindow}}"
Margin="0">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<CheckBox IsChecked="{Binding Path=IsDisplay}" Checked="FilterDataGrid" Unchecked="FilterDataGrid">
<CheckBox.Content>
<TextBlock MinWidth="100" Text="{Binding Path=Name}" HorizontalAlignment="Center" TextWrapping="Wrap" TextTrimming="CharacterEllipsis"/>
</CheckBox.Content>
</CheckBox>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
<Button Content="Clear" Height="20" HorizontalAlignment="Stretch"></Button>
</ComboBox>
但是我有一个例外,它说我不能添加项目来控制,它有 ItemTemplate。第二个是这样的:
<ComboBox Name="oilWells_comboBox"
Style="{StaticResource MMComboBox}"
MaxWidth="100"
ItemsSource="{Binding DataContext.OilWellCollection, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:MainWindow}}"
Margin="0">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<CheckBox IsChecked="{Binding Path=IsDisplay}" Checked="FilterDataGrid" Unchecked="FilterDataGrid">
<CheckBox.Content>
<TextBlock MinWidth="100" Text="{Binding Path=Name}" HorizontalAlignment="Center" TextWrapping="Wrap" TextTrimming="CharacterEllipsis"/>
<Button Content="Clear" Height="20" HorizontalAlignment="Stretch"></Button>
</CheckBox.Content>
</CheckBox>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
但在这种情况下,按钮会在每个复选框之后添加。你有什么想法,如何只做一次?提前谢谢你)
【问题讨论】:
-
编辑 ComboBox 本身的
Template属性。在VS中右键单击CB,选择Edit Template-Edit copy,然后在该模板中添加按钮 -
您的问题不清楚 - 您是否希望该按钮作为 ComboBox 中的选项之一?您想创建自己的包含按钮的 ComboBox 吗?您希望 ComboBox 中的每个选项都包含一个按钮吗?
-
我想添加一个按钮作为第一个组合框项,并且后面的所有项都必须是 ItemsTemplate 中的项
标签: wpf xaml combobox itemtemplate