我在 1 个模块中有带有 Prism 和 mvvm 架构的 wpf 应用程序,我有一个树视图,在其他模块中我有文本框。两个模块都正确加载。我想做的是-单击树视图节点。- 在视图模型中设置当前选定的对象。- 也触发一个事件(或其他东西)并将节点值设置为其他模块中的文本框
前两点工作正常。这是我想不通的第三个。
这是我的树视图代码。
<TreeView Name="TreeViewTest" Grid.Row="1" Grid.Column="0" ItemsSource="{Binding Path= TestObservable}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" Tag="{Binding Id}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我设置选定对象的代码。
private bool _selected = false;
public bool IsSelected
{
get
{
return _selected;
}
set
{
if (_selected == value) return;
_selected = value;
NotifyPropertyChanged("IsSelected");
this._selectedItem = this;
RaisePropertyChanged(() => Name);
}
}
并且 viewmodel isSelected 是实际绑定树视图模块的主视图模型的子视图模型。
所以如下
public interface ITreeViewModel
{
ITreeViewModelView { get; }
ObservableCollection<IChildTreeViewModel> TestObservable{ get; set; }
}
任何帮助都会很棒