gpt4 book ai didi

c# - 使用按钮扩展组合框

转载 作者:行者123 更新时间:2023-11-30 22:39:51 24 4
gpt4 key购买 nike

我想以在组合框旁边显示两个按钮的方式扩展 WPF 组合框。我不能使用 UserControl,因为我需要像这样在纯 xaml 中指定组合框的项目:

<CustomComboBox>
<CustomComboBoxItem />
<CustomComboBoxItem />
</CustomComboBox>

我很害怕采用组合框的模板并对其进行扩展,因为对于组合框来说,它非常庞大且复杂。我正在寻找一种简单易行的解决方案来创建类似 ComboBox 的 ItemsControl,它只附加了两个按钮。欢迎提出建议!

最佳答案

编辑:使用 UserControl 的具体示例:

Xaml:

<UserControl x:Class="Test.CustomComboBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<StackPanel Orientation="Horizontal">
<ComboBox Name="_comboBox" Margin="5"/>
<Button Content="_Apply" Padding="3" Margin="5" Click="Button_Apply_Click"/>
<Button Content="_Reset" Padding="3" Margin="5" Click="Button_Reset_Click"/>
</StackPanel>
</UserControl>

代码:

[ContentProperty("Items")]
public partial class CustomComboBox : UserControl
{
public event RoutedEventHandler ApplyClick;
public event RoutedEventHandler ResetClick;

public ItemCollection Items
{
get { return _comboBox.Items; }
set
{
_comboBox.Items.Clear();
foreach (var item in value)
{
_comboBox.Items.Add(item);
}
}
}

public CustomComboBox()
{
InitializeComponent();
}

private void Button_Apply_Click(object sender, RoutedEventArgs e)
{
if (ApplyClick != null)
{
ApplyClick(sender, e);
}
}

private void Button_Reset_Click(object sender, RoutedEventArgs e)
{
if (ResetClick != null)
{
ResetClick(sender, e);
}
}
}

用法:

 <local:CustomComboBox ApplyClick="Button2_Click">
<ComboBoxItem Content="Item1"/>
<ComboBoxItem Content="Item2"/>
<ComboBoxItem Content="Item3"/>
</local:CustomComboBox>

外观:

enter image description here


UserControl 应该没问题,您仍然可以在 Xaml 标记中指定项目,例如如果我有时间用户控制,我可以这样做:

[ContentProperty("Hours")]
public partial class TimeBox : UserControl
{
public string Hours
{
get { return this.TBHours.Text; }
set { this.TBHours.Text = value; }
}

...
}

这样您就可以在 XAML 中设置小时数:

        <local:TimeBox>
<sys:String>24</sys:String>
</local:TimeBox>

您应该能够调整它以设置 ComboBox 的项目。

关于c# - 使用按钮扩展组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5513724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com