簡體   English   中英

事件處理程序無法在XAML中使用

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM