Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我想使用c打开Treeview项目选择上的属性网格#_C#_Treeview_Propertygrid - Fatal编程技术网

C# 我想使用c打开Treeview项目选择上的属性网格#

C# 我想使用c打开Treeview项目选择上的属性网格#,c#,treeview,propertygrid,C#,Treeview,Propertygrid,我一直在尝试在选择树节点时打开一个属性网格,然后将属性网格的值绑定到C#中选定的树节点。这样,如果我创建一个新的树节点,它在属性网格中有自己的值 有没有人能举个例子说明如何做到这一点,或者就下面的代码向我提出建议 public partial class WPFpropertygriddemo : Window { public WPFpropertygriddemo() { InitializeComponent(); _propertyGrid

我一直在尝试在选择树节点时打开一个属性网格,然后将属性网格的值绑定到C#中选定的树节点。这样,如果我创建一个新的树节点,它在属性网格中有自己的值

有没有人能举个例子说明如何做到这一点,或者就下面的代码向我提出建议

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吗

谢谢 斯雷