У меня есть следующий код XAML:WPF TextBox Trigger
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"
x:Class="WpfApplication4.MainWindow"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<TextBox Margin="89,116,69,123" x:Name="txtFilter" Background="AliceBlue" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<cmd:EventToCommand Command="{Binding MyClass:SearchedTextChanged}" CommandParameter="{Binding Text, ElementName=txtFilter}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
<TextBox Width="100" Background="AntiqueWhite">
</TextBox>
И код выглядит следующим образом:
public partial class MainWindow: Window
{
public MainWindow()
{
InitializeComponent();
}
}
public class MyClass : MainWindow
{
public RelayCommand<string> SearchedTextChanged { get; set; }
MyClass()
{
SearchedTextChanged = new RelayCommand<string>(OnSearchedTextChanged);
DataContext=this;
}
private void OnSearchedTextChanged(string val)
{
if (val != null)
{
System.Diagnostics.Debug.WriteLine(val);
}
}
}
MainWindow является класс, который является производным от window.But его не попадает, когда текст изменяется в текстовом поле. Однако, если приведенный выше код является wriiten в классе mainwindow, он отлично работает.