WPF - Как связать со свойством зависимости пользовательского класса - PullRequest
0 голосов
/ 04 августа 2010

Я снова в аду связывания WPF :) У меня есть публичный класс (Treatment) следующим образом:

public class Treatment()  
{  
...    
    public Ticker SoakTimeActual;   
...  
}

В пределах Ticker есть свойство зависимости:

public class Ticker : FrameworkElement
{     
    // Value as string
    public static readonly DependencyProperty DisplayIntervalProperty = DependencyProperty.Register("DisplayInterval", typeof(string), typeof(Ticker), null);
    public string DisplayInterval
    {
        get { return (string)GetValue(DisplayIntervalProperty); }
        set { SetValue(DisplayIntervalProperty, value); }
    }
    ...
}

В моем приложении создается отдельный объект Treatment, который должен быть легко доступен в XAML (в app.xaml):

<Application.Resources>
   <ResourceDictionary>
      <u:Treatment
         x:Key="currentTreatment" />
   </ResourceDictionary>
</Application.Resources>

Теперь мне нужно привязать свойство DisplayInterval зависимости SoakTimeActual, чтобы отобразить этот текст в его текущем состоянии. Вот моя попытка, которая не работает:

<TextBlock              
   Text="{Binding Source={StaticResource currentTreatment}, Path=SoakTimeActual.DisplayInterval}"/>

Это, конечно, компилируется нормально, но ничего не будет отображаться. Я предполагаю, что сделал ошибку с уведомлением об изменении или DataContext или обоими.

Любое понимание приветствуется!

1 Ответ

3 голосов
/ 04 августа 2010

Привязка WPF работает только со свойствами, а не с полями.

Поэтому вам необходимо изменить поле SoakTimeActual на свойство, например:

public class Treatment
{  
...    
    public Ticker SoakTimeActual { get; set; }
...  
}
...