, когда я обновляю элемент в ObservableCollection «MyCollection» Я хочу, чтобы мой заказ TextBlock (выполнить функцию и изменить его текст, я думаю, что я должен вызвать функцию OnMYDataChanged:.Выполнить функцию в DependencyProperty
<ListBox ItemsSource="{Binding MyCollection}" ItemTemplate="{StaticResource MyTemplate}" >
<DataTemplate x:Key="MyTemplate" >
<Grid >...
<local:MyTextBlock Path="{Binding MyText}" />
где
public class MyTextBlock : TextBlock
{
public string Path
{ get {return (string)GetValue(PathProperty);}
set { SetValue(PathProperty, value); }
}
public static readonly DependencyProperty PathProperty =
DependencyProperty.Register("Path", typeof(string), typeof(MyTextBlock), new PropertyMetadata(OnMyDataChanged));
static void OnMyDataChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) {
Text = DoSomethingWithText(); //Does not work
}
Когда я изменить один элемент, OnMyDataChanged вызывается, но я получаю ошибку там: ссылка на объект требуется для не статического поля, метода или свойства
Это решило проблему! Спасибо! Считаете ли вы, что этот подход является более правильным, или будет лучше использовать IMultiValueConverter, связывающий MyText и containerSize? – Daniel
Я думаю, что это отличное решение. Я не представляю сложные привязки. –