У меня плохое знание английского, потому что я не являюсь носителем английского языка.
Я создал следующее поведение, которое работает с элементом управления TextBox. Поведение имеет DP типа коллекции с именем Items.
class HighlightBehavior : Behavior<TextBox>
{
public List<TextStyle>Items
{
get { return (List<TextStyle>)GetValue(ItemsProperty); }
set { SetValue(ItemsProperty, value); }
}
public static readonly DependencyProperty ItemsProperty =
DependencyProperty.Register("Items", typeof(List<TextStyle>), typeof(HighlightBehavior), new PropertyMetadata(ItemsChanged));
private static void ItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// break point
}
}
И... Я создал MainWindow для использования в качестве следующего кода выше.
<MainWindow>
<TextBox>
<i:interaction.Behaviors>
<behavior:HighlightBehavior/>
</i:interaction.Behavior>
</TextBox>
</MainWindow>
И я написал MainWindowViewModel с DP типа коллекции с именем HighlightItems.
class MainWindowViewModel : ViewModelBase
{
public List<TextStyle> HighlightItems
{
get { return (List<TextStyle>)GetValue(HighlightItemsProperty ); }
set { SetValue(HighlightItemsProperty , value); }
}
public static readonly DependencyProperty HighlightItemsProperty =
DependencyProperty.Register("HighlightItems", typeof(List<TextStyle>), typeof(HighlightBehavior), new PropertyMetadata(null));
public MainWindowViewModel()
{
SetValue(HighlightItemsProperty, new List<TextStyle>());
}
}
И я привязал MainWindowViewModel к MainWindow и соединил HighlightItems(DP) MainWindowViewModel с Items(DP) HighlightBehavior в виде следующего кода.
<MainWindow>
<TextBox>
<i:interaction.Behaviors>
<behavior:HighlightBehavior Items="{Binding HighlightItems, Mode=TwoWay}"/>
</i:interaction.Behavior>
</TextBox>
</MainWindow>
Подводя итог, структура выглядит следующим образом.
Я ожидал, что ItemsChanged из HighlightBehavior вызывается при каждом изменении Items. Но не называется.
Я хочу получать уведомления всякий раз, когда изменяется DP(Items) типа коллекции HighlightBehavior. Что я должен сделать, чтобы достичь этой цели?
Спасибо за чтение. Я подожду ответа.
Items="{Binding HighlightBehavior}"
. Это опечатка? Я ожидаю, что это будетItems="{Binding HighlightItems}"
. - person Keithernet   schedule 14.10.2019