具有搜索支持的WPF自定义项控件
我需要编写一个自定义WPF控件,它看起来应该像一个带有扩展项搜索功能的组合框。为此,我希望有一个具有搜索支持的WPF自定义项控件,wpf,combobox,custom-controls,selector,Wpf,Combobox,Custom Controls,Selector,我需要编写一个自定义WPF控件,它看起来应该像一个带有扩展项搜索功能的组合框。为此,我希望有一个文本框和一个带有搜索文本框和列表框的弹出窗口 我的第一个问题是继承选择器,或者更确切地说继承组合框,是否是一个好的决定 第二个问题是,我在哪里可以找到这方面的好例子。。唯一的解决方案似乎是分解微软的库,看看他们在做什么 其他问题: 我应该如何处理事件?e、 g.按钮点击模板。我是应该在模板中查找它并以这种方式注册事件,还是可以像Click=“PART\u Button1CLick”那样直接在XAML中
文本框
和一个带有搜索文本框
和列表框的弹出窗口
我的第一个问题是继承选择器
,或者更确切地说继承组合框
,是否是一个好的决定
第二个问题是,我在哪里可以找到这方面的好例子。。唯一的解决方案似乎是分解微软的库,看看他们在做什么
其他问题:
我应该如何处理事件?e、 g.按钮
点击模板
。我是应该在模板中查找它并以这种方式注册事件,还是可以像Click=“PART\u Button1CLick”
那样直接在XAML中注册它
谢谢你们 我认为你的思路是对的。您可以在文本框上设置一个TextChanged事件,在文本更改后,如果至少有3个字符,您将使用结果列表框生成弹出窗口,并且列表框将其SelectionChanged事件设置为设置文本框的文本并终止其父弹出窗口。您可能应该检查是否已经创建了弹出窗口,并在新角色出现时将其杀死。您甚至可以将弹出窗口的生成放在计时器上,因此如果他们快速键入五个字符,您只需在停机一秒钟后创建一个弹出窗口(避免两个无关的弹出窗口)
我不知道有什么好的例子,但我也做过类似的事情(甚至可能就是这个,我不记得了),这真的不会那么难
唯一让我困惑的是你说:
为此,我想要一个
文本框和带有搜索的弹出窗口
文本框和列表框
我不明白那里的第二个文本框。您应该只需要第一个。好的,这就是我所做的:
主题/Generic.XAML中的XAML控制模板:
<Style TargetType="{x:Type local:MyControl}">
<Setter Property="Template">
...
</Setter>
</Style>
[TemplatePart(Name = MyControl.partSelectedTextBox, Type = typeof(TextBox))]
public class MyControl : Selector
{
public override void OnApplyTemplate()
{
...
if (_txtSelected == null)
{
_txtSelected = base.GetTemplateChild(partSelectedTextBox) as TextBox;
if (_txtSelected != null)
{
_txtSelected.MouseLeftButtonUp += new MouseButtonEventHandler(PART_txtSelected_MouseLeftButtonUp);
}
}
...
base.ApplyTemplate();
}
}