Я пытаюсь выяснить, как точно определить, какое имя свойства следует использовать в событии PropertyChanged для свойства Text в TextBlock ниже.
<TreeView ItemsSource="{Binding PrimitiveNodes}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/>
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding PrimitiveNodes}">
<TextBlock PreviewMouseLeftButtonDown="TextBlock_PreviewMouseLeftButtonDown" ContextMenu="{StaticResource TreeViewItemContextMenu}" PreviewMouseRightButtonDown="TextBlock_PreviewMouseRightButtonDown"
Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
И вот код, который я используюдля свойства Text.
// Called out in the Name property when it is set
this.OnPropertyChanged(System.Windows.Controls.TextBlock.TextProperty.Name);
Вот функция OnPropertyChanged
public void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
Оба свойства IsSelected и IsExpanded корректно обновляются при изменениииз кода позади.Однако свойство Text этого не делает.Я попытался передать null в OnPropertyChanged , когда свойство Name было обновлено (таким образом, все свойства обновлены), и это работало нормально, Text свойство TextBlock было правильно обновлено с новым значением.Поэтому я подозреваю, что, возможно, я передаю неверную строку как propertyName для свойства Text TextBlock при его обновлении, но я неуверен, какое должно быть правильное имя свойства или как я бы его выяснил.Есть идеи?
Спасибо, Крейг