[英]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.