WPF 自定义控件:XAML 中定义的控件的事件?
WPF Custom Control : Events for the controls defined in XAML?
我正在制作一个派生自 ComboBox
的 CustomControl :
public class CBT : ComboBox
{
static CBT()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CBT),
new FrameworkPropertyMetadata(typeof(CBT)));
}
}
我正在编辑 ComboBox
的默认 Style
(..从 Blend 复制)。
所以如果我要在 ComboBox 的 Popup
中添加一个 Button
,并且想要注册它的 Click
,我应该遵循的最佳方法是什么?
我试过了:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ui_test"
xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2"
x:Class="ui_test.CBT">
并更改为:
public partial class CBT : ComboBox {}
但是抛出错误 Partial declarations of 'ui_test.CBT' must not specify different base classes
请帮帮我好吗? :)
提前致谢:)
编辑:我不知道如何处理按钮的事件:(
您需要一种样式,您不能将 class 设置为那样的资源字典
查看此主题类似问题 here or read Mosers guide
来自文章:
<Style TargetType="{x:Type yourcontrol}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type yourcontrol}">
...
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这就是我最终得到的结果:
命令对于我必须完成的任务来说太过分了
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
popup = this.GetTemplateChild("PART_Popup") as Popup;
}
只需传入您要获取的控件的名称:)
我正在制作一个派生自 ComboBox
的 CustomControl :
public class CBT : ComboBox
{
static CBT()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CBT),
new FrameworkPropertyMetadata(typeof(CBT)));
}
}
我正在编辑 ComboBox
的默认 Style
(..从 Blend 复制)。
所以如果我要在 ComboBox 的 Popup
中添加一个 Button
,并且想要注册它的 Click
,我应该遵循的最佳方法是什么?
我试过了:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ui_test"
xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2"
x:Class="ui_test.CBT">
并更改为:
public partial class CBT : ComboBox {}
但是抛出错误 Partial declarations of 'ui_test.CBT' must not specify different base classes
请帮帮我好吗? :) 提前致谢:)
编辑:我不知道如何处理按钮的事件:(
您需要一种样式,您不能将 class 设置为那样的资源字典
查看此主题类似问题 here or read Mosers guide
来自文章:
<Style TargetType="{x:Type yourcontrol}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type yourcontrol}">
...
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这就是我最终得到的结果: 命令对于我必须完成的任务来说太过分了
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
popup = this.GetTemplateChild("PART_Popup") as Popup;
}
只需传入您要获取的控件的名称:)