我制作了一个带有下拉按钮的简单组合框。如果用户单击删除按钮,则组合框的selectedItem将为空。
这是我最初的组合框:(我知道,堆栈面板应该在按钮内)
<TextBlock Text="ComboBox:"></TextBlock>
<ComboBox
ItemsSource="{Binding ITEMS}"
SelectedItem="{Binding Item}"
DisplayMemberPath="Description"
IsTextSearchEnabled="True"
IsEditable="False"
IsDropDownOpen="False">
</ComboBox>
<StackPanel
Orientation="Horizontal"
HorizontalAlignment="Right"
MouseEnter="GridSplitter_MouseEnter"
MouseLeave="GridSplitter_MouseLeave">
<Image
Source="../Images/clos.png"
Height="12" Width="15" Margin="0 0 20 4">
</Image>
</StackPanel>
我的问题:如何创建自定义组合框元素,这样我就不必为要制作的每个组合框重复此代码。清除的值是selectedItem。
会是这样的:
<custom:ComboBoxWithClearance>
ItemsSource="{Binding ITEMS}"
SelectedItem="{Binding Item}"
DisplayMemberPath="Description"
IsTextSearchEnabled="True"
IsEditable="False"
IsDropDownOpen="False"
</custom:ComboBoxWithClearance>
答案 0 :(得分:0)
您正在谈论创建UserControl
How to Create a WPF User Control & Use It in a WPF Application
答案 1 :(得分:0)
您可以创建一个名为“ ComboBoxWithClearance”的UserControl
,并将dependency properties(ItemsSource
,SelectedItem
)添加到此代码的后面。
然后,您将当前的XAML移到UserControl
的标记文件中,并将这些属性绑定到您创建的它们相应的自定义依赖项属性:
<ComboBox DataContext="{Binding RelativeSource={RelativeSource AncestorType=UserControl}}"
ItemsSource="{Binding ItemsSource}"
SelectedItem="{Binding SelectedItem}"
... />
完成此操作后,您将能够在其他视图中使用控件并将其依赖项属性设置/绑定到所需的任何内容,例如:
<local:ComboBoxWithClearance
ItemsSource="{Binding ITEMS}"
SelectedItem="{Binding Item}">
...
</custom:ComboBoxWithClearance>