C# 我想使用c打开Treeview项目选择上的属性网格#
我一直在尝试在选择树节点时打开一个属性网格,然后将属性网格的值绑定到C#中选定的树节点。这样,如果我创建一个新的树节点,它在属性网格中有自己的值 有没有人能举个例子说明如何做到这一点,或者就下面的代码向我提出建议C# 我想使用c打开Treeview项目选择上的属性网格#,c#,treeview,propertygrid,C#,Treeview,Propertygrid,我一直在尝试在选择树节点时打开一个属性网格,然后将属性网格的值绑定到C#中选定的树节点。这样,如果我创建一个新的树节点,它在属性网格中有自己的值 有没有人能举个例子说明如何做到这一点,或者就下面的代码向我提出建议 public partial class WPFpropertygriddemo : Window { public WPFpropertygriddemo() { InitializeComponent(); _propertyGrid
public partial class WPFpropertygriddemo : Window
{
public WPFpropertygriddemo()
{
InitializeComponent();
_propertyGrid.Visibility = Visibility.Hidden;
}
private void myTreeView_Selected(object sender, RoutedEventArgs e)
{
TreeViewItem tvi = e.OriginalSource as TreeViewItem;
Item itemsub = (Item)tvi.Header;
if (itemsub != null)
{
_propertyGrid.Visibility = Visibility.Visible;
// System.Windows.MessageBox.Show(itemsub.DisplayValue);
_propertyGrid.SelectedObject = itemsub;
}
}
}
public class Item : MyModelINotifyProperty
{
public string DisplayValue { get; set; }
private bool _isSelected = false;
public bool IsSelected
{
get
{
return _isSelected;
}
set
{
_isSelected = value;
OnPropertyChanged("IsSelected");
}
}
private string _sample;
public string Sample
{
get
{
return _sample;
}
set
{
_sample = value;
OnPropertyChanged("Sample");
}
}
}
public class MyViewModel : MyModelINotifyProperty
{
public ObservableCollection<Item> Items
{
get
{
return new ObservableCollection<Item>()
{
new Item() {DisplayValue = "Item1", IsSelected = false, Sample = "Sample: I am Item1"},
new Item() {DisplayValue = "Item2", IsSelected = true, Sample = "Sample: I am Item2"},
new Item() {DisplayValue = "Item3", IsSelected = false, Sample = "Sample: I am Item3"}
};
}
}
}
public abstract class MyModelINotifyProperty : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
public分部类wpfpropertygridemo:Window
{
公共WPFpropertygriddemo()
{
初始化组件();
_propertyGrid.Visibility=Visibility.Hidden;
}
已选择private void myTreeView_(对象发送方,路由目标)
{
TreeViewItem tvi=e.原始来源为TreeViewItem;
Item itemsub=(Item)tvi.Header;
如果(itemsub!=null)
{
_propertyGrid.Visibility=可见性.Visibility;
//System.Windows.MessageBox.Show(itemsub.DisplayValue);
_propertyGrid.SelectedObject=itemsub;
}
}
}
公共类项目:MyModelINotifyProperty
{
公共字符串显示值{get;set;}
private bool_isSelected=false;
公选学校
{
得到
{
返回(未选);;
}
设置
{
_isSelected=值;
不动产变更(“IsSelected”);
}
}
私有字符串_样本;
公共字符串示例
{
得到
{
返回样品;
}
设置
{
_样本=价值;
不动产变更(“样本”);
}
}
}
公共类MyViewModel:MyModelINotifyProperty
{
公共可观测收集项目
{
得到
{
返回新的ObservableCollection()
{
newitem(){DisplayValue=“Item1”,IsSelected=false,Sample=“Sample:I am Item1”},
newitem(){DisplayValue=“Item2”,IsSelected=true,Sample=“Sample:I am Item2”},
新建项(){DisplayValue=“Item3”,IsSelected=false,Sample=“Sample:I am Item3”}
};
}
}
}
公共抽象类MyModelINotifyProperty:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
受保护的无效OnPropertyChanged(字符串propertyName)
{
if(PropertyChanged!=null)
{
PropertyChanged(这是新的PropertyChangedEventArgs(propertyName));
}
}
}
我不明白的是TreeViewItem是在哪里定义的,代码行是什么
“TreeViewItem tvi=e.原始来源为TreeViewItem;
做什么?我在TreeViewItem和原始源中有一个错误。我应该添加一个引用来使用e.Original吗
谢谢
斯雷