[英]Event handlers not working in xaml
我的页面中有一个TextBox
。 有INotifyChangeProperty
所有事件处理程序(LostFocus,KeyDown,KeyUp)都不会触发。 在XAML后面,我有C#代码。
private void TextBox_KeyUp_For_Decimal(object sender, KeyEventArgs e)
{
}
这是XAML代码
<Grid Visibility="{Binding FreeInput, Converter={StaticResource BoolToVisibilityConverter}}">
<Grid.Resources>
<TextBox
x:Key="StringDefaultPresenter"
x:Shared="False"
Text="{Binding Default, UpdateSourceTrigger=LostFocus}" CommandManager.PreviewExecuted="TextBox_PreviewExecuted"
LostFocus="Update_Default"
KeyDown="TextBox_KeyDown_For_String"/>
<TextBox
x:Key="NumberDefaultPresenter"
x:Shared="False"
Text="{Binding Default, UpdateSourceTrigger=LostFocus}"
CommandManager.PreviewExecuted="TextBox_PreviewExecuted"
LostFocus="Update_Default"
KeyDown="TextBox_KeyDown_For_Decimal"
KeyUp="TextBox_KeyUp_For_Decimal"/>
<CheckBox
x:Key="BooleanDefaultPresenter"
x:Shared="False"
HorizontalAlignment="Center"
VerticalAlignment="Center"
LostFocus="Update_Default"
IsChecked="{Binding Default, Converter={l:DefaultValueConverter}, UpdateSourceTrigger=LostFocus}"/>
<DatePicker
x:Key="DateTimeDefaultPresenter"
x:Shared="False"
SelectedDate="{Binding Default, Converter={l:DefaultValueConverter}, UpdateSourceTrigger=LostFocus}"
LostFocus="Update_Default"/>
<Style x:Key="DefaultPresenterStyle" x:Shared="False" TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding DataType}" Value="{x:Static l:DataType.STRING}">
<Setter Property="Content" Value="{StaticResource StringDefaultPresenter}"/>
</DataTrigger>
<DataTrigger Binding="{Binding DataType, Converter={l:EnumMatchToBoolConverter}, ConverterParameter={StaticResource NumberDataType}}" Value="True">
<Setter Property="Content" Value="{StaticResource NumberDefaultPresenter}"/>
</DataTrigger>
<DataTrigger Binding="{Binding DataType}" Value="{x:Static l:DataType.BOOLEAN}">
<Setter Property="Content" Value="{StaticResource BooleanDefaultPresenter}"/>
</DataTrigger>
<DataTrigger Binding="{Binding DataType}" Value="{x:Static l:DataType.DATE_TIME}">
<Setter Property="Content" Value="{StaticResource DateTimeDefaultPresenter}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<ContentControl Style="{StaticResource DefaultPresenterStyle}"/>
</Grid>
在我将x:Keys添加到文本框并添加样式之前,这是可行的。
找到了问题。 由于XAML虚拟化,处理程序没有附加到事件上,而是使用样式显式设置它们可以解决问题。
像这样将其添加到TextBox或本例中的ComboBox
<ComboBox
x:Key="StringLengthPresenter" x:Shared="False"
SelectedItem="{Binding Length, UpdateSourceTrigger=PropertyChanged}">
<ComboBox.Style>
<Style TargetType="ComboBox">
<EventSetter Event="SelectionChanged" Handler="Length_SelectionChanged"/>
</Style>
</ComboBox.Style>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.