我有一个自AutoCompleteBoxEx
扩展的自定义AutoCompleteBox
控件。在xaml中,它的定义如下:
<customControlsPtw:AutoCompleteBoxEx x:Name="PART_TextBox"
Grid.Row="0"
Grid.Column="0"
Padding="2,2,22,2"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Top"
IsTextCompletionEnabled="False"
KeyUp="AutoCompleteBox_KeyUp"
MouseLeftButtonUp="AutoCompleteBox_MouseLeftButtonUp"
ItemsSource="{TemplateBinding ItemsSource}"
Text="{Binding Text,
RelativeSource={RelativeSource TemplatedParent},
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"
TextWrapping="{TemplateBinding TextWrapping}">
重要的部分是KeyUp
和MouseLeftButtonUp
,我要分别为其运行功能AutoCompleteBox_KeyUp
和AutoCompleteBox_MouseLeftButtonUp
。通常,这些可以在后面的代码中定义,但是我想避免这样做,并且如果我可以在自定义控件本身中包含这些函数,则希望这样做。
我有在xaml中定义的自定义控件的上下文:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:customControls="clr-namespace:ptw.UI.CustomControls">
因此我可能会做类似customControls:AutoCompleteBoxEx.AutoCompleteBox_KeyUp
的操作,但似乎找不到它(无法解析符号)。
我仍然习惯于WPF,所以我想知道是否有一种方法可以做到这一点?
答案 0 :(得分:1)
...并且希望我可以在自定义控件本身中使用这些功能
如果要在“自定义控件本身”中定义事件处理程序,则可以使用AutoCompleteBoxEx
语法将它们连接到+=
类的构造函数中:
public AutoCompleteBoxEx()
{
this.KeyUp += AutoCompleteBox_KeyUp;
this.MouseLeftButtonUp += AutoCompleteBox_MouseLeftButtonUp;
}
然后默认情况下,它们将在AutoCompleteBoxEx
的每个实例中出现。