繁体   English   中英

在 KeyUp 的 XAML 中调用自定义控件的函数

[英]Call a custom control's function in the XAML at KeyUp

我有一个从AutoCompleteBox扩展的自定义AutoCompleteBoxEx控件。 在 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}">

重要的部分是KeyUpMouseLeftButtonUp ,我想分别为它们运行AutoCompleteBox_KeyUpAutoCompleteBox_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,所以我想知道是否有办法做到这一点?

...并且希望我可以在自定义控件本身中使用这些功能

如果您希望在“自定义控件本身”中定义事件处理程序,您可以使用+=语法将它们挂接到AutoCompleteBoxEx类的构造函数中:

public AutoCompleteBoxEx()
{
    this.KeyUp += AutoCompleteBox_KeyUp;
    this.MouseLeftButtonUp += AutoCompleteBox_MouseLeftButtonUp;
}

然后它们将默认出现在AutoCompleteBoxEx每个实例中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM