依赖项 属性 GetValue returns 空
Dependency Property GetValue returns null
我在我的 XAML 中声明了一个自定义 TriggerAction
并且我将命令绑定到它。
<DataTemplate x:Key="data">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Name}"/>
<TextBox Width="150" Name="styleTb">
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<behaviors:TextChangedTrigger TextChangedCommand="{Binding TextChangedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
</StackPanel>
</DataTemplate>
但是当我尝试通过 GetValue
方法获取值时,它 returns null
.
这就是 class 的样子
public class TextChangedTrigger : TriggerAction<TextBox>
{
public static readonly DependencyProperty TextChangedCommandProperty = DependencyProperty.Register("TextChangedCommand", typeof(ICommand),
typeof(TextChangedTrigger));
/// <summary>
/// Gets the Command which will be executed.
/// </summary>
public ICommand TextChangedCommand
{
get { return (ICommand)GetValue(TextChangedCommandProperty); }
set { SetValue(TextChangedCommandProperty, value); }
}
/// <summary>
/// Invokes the TextChangedCommand
/// </summary>
/// <param name="parameter"></param>
protected override void Invoke(object parameter)
{
object test = GetValue(TextChangedCommandProperty); // Returns null
}
为什么 return 为空?
您实际上从未将 TextChangedCommand 属性 的值设置为任何值。
在 TextChangedTrigger class 的构造函数中为它设置一些值,或者使用允许设置默认值的 DependencyProperty.Register 重载。
public static readonly DependencyProperty TextChangedCommandProperty = DependencyProperty.Register("TextChangedCommand",
typeof(ICommand),
typeof(TextChangedTrigger),
new UIPropertyMetadata(new WhateverYourCommandIs());
我在我的 XAML 中声明了一个自定义 TriggerAction
并且我将命令绑定到它。
<DataTemplate x:Key="data">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Name}"/>
<TextBox Width="150" Name="styleTb">
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<behaviors:TextChangedTrigger TextChangedCommand="{Binding TextChangedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
</StackPanel>
</DataTemplate>
但是当我尝试通过 GetValue
方法获取值时,它 returns null
.
这就是 class 的样子
public class TextChangedTrigger : TriggerAction<TextBox>
{
public static readonly DependencyProperty TextChangedCommandProperty = DependencyProperty.Register("TextChangedCommand", typeof(ICommand),
typeof(TextChangedTrigger));
/// <summary>
/// Gets the Command which will be executed.
/// </summary>
public ICommand TextChangedCommand
{
get { return (ICommand)GetValue(TextChangedCommandProperty); }
set { SetValue(TextChangedCommandProperty, value); }
}
/// <summary>
/// Invokes the TextChangedCommand
/// </summary>
/// <param name="parameter"></param>
protected override void Invoke(object parameter)
{
object test = GetValue(TextChangedCommandProperty); // Returns null
}
为什么 return 为空?
您实际上从未将 TextChangedCommand 属性 的值设置为任何值。
在 TextChangedTrigger class 的构造函数中为它设置一些值,或者使用允许设置默认值的 DependencyProperty.Register 重载。
public static readonly DependencyProperty TextChangedCommandProperty = DependencyProperty.Register("TextChangedCommand",
typeof(ICommand),
typeof(TextChangedTrigger),
new UIPropertyMetadata(new WhateverYourCommandIs());