2016-10-18 3 views
1

У меня есть объявленный пользовательский TriggerAction в моем XAML, и я привязываю к нему команду.Свойство Dependency GetValue возвращает null

<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, он возвращает null.

Это как класс выглядит

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 
    } 

Почему не возвращает нуль?

+0

Как насчет использования 'object test = TextChangedCommand;'? –

+0

@MikeEason не работает – Coding4Fun

+0

См. Мой ответ. Я отредактировал его – Coding4Fun

ответ

0

Вы никогда не устанавливали значение свойства TextChangedCommand ни на что.

Либо установите его в конструкторе для класса TextChangedTrigger, либо используйте перегрузку DependencyProperty.Register, которая позволяет установить значение по умолчанию.

public static readonly DependencyProperty TextChangedCommandProperty = DependencyProperty.Register("TextChangedCommand", 
    typeof(ICommand), 
    typeof(TextChangedTrigger), 
    new UIPropertyMetadata(new WhateverYourCommandIs()); 
Смежные вопросы