Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# 获取WPF树视图中ViewModel中模型的AllowDrop属性_C#_Wpf_Xaml_Mvvm_Treeview - Fatal编程技术网

C# 获取WPF树视图中ViewModel中模型的AllowDrop属性

C# 获取WPF树视图中ViewModel中模型的AllowDrop属性,c#,wpf,xaml,mvvm,treeview,C#,Wpf,Xaml,Mvvm,Treeview,我有一个属性为AllowDrop的模型类ViewItem。我的视图模型ViewModel是ViewItem的可观察集合 ViewItem属性 public bool AllowDrop { get { return _allowDrop; } } 我有一个ViewTree,它的数据源绑定到ViewModel的一个实例MyItems 我希望能够访问将ViewTreeItems AllowDrop属性绑

我有一个属性为AllowDrop的模型类ViewItem。我的视图模型ViewModel是ViewItem的可观察集合

ViewItem属性

    public bool AllowDrop
    {
        get
        {
            return _allowDrop;
        }
    }
我有一个ViewTree,它的数据源绑定到ViewModel的一个实例MyItems

我希望能够访问将ViewTreeItems AllowDrop属性绑定到基础模型,但是我无法找到访问它的正确方法

我的TreeView的XAML如下所示

        <TreeView x:Name="ViewsTree"
                  AllowDragDrop="True"
                  DragOver="ViewsTree_DragOver"
                  ItemsSource="{Binding MyItems}" 
                  ItemTemplate="{StaticResource ViewTemplate}"
        <Style TargetType="{x:Type TreeViewItem}">
            <Setter Property="AllowDrop" Value="{Binding}"/>
        </Style>
    </TreeView> 

这里有一个简单的示例

XAML:


代码隐藏:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        DataContext = new ViewModel();
    }
}

public class ViewModel
{
    public ViewModel()
    {
        MyItems = new List<ViewItem>();
        for (int i = 0; i < 10; i++)
            MyItems.Add(new ViewItem { Id = i, AllowDrop = i % 2 == 0 });
    }

    public List<ViewItem> MyItems { get; set; }
}

public class ViewItem
{
    public int Id { get; set; }
    public bool AllowDrop { get; set; }
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
DataContext=新的ViewModel();
}
}
公共类视图模型
{
公共视图模型()
{
MyItems=新列表();
对于(int i=0;i<10;i++)
添加(新视图项{Id=i,AllowDrop=i%2==0});
}
公共列表MyItems{get;set;}
}
公共类视图项
{
公共int Id{get;set;}
公共bool AllowDrop{get;set;}
}

尝试在TreeListView上拖动某些内容只对Id为偶数的项目有效。

您的问题太模糊,无法回答。它没有包含一个,但更关键的是,它根本不清楚为什么以及如何将数据中的多个值映射到视图中的单个值。如果不是所有视图项
AllowDrop
属性都具有相同的值,您希望发生什么。不管你期望什么,为什么你觉得这是一个合适的选择?在我看来,将属性放在引用项集合和单个属性的容器视图模型对象中更有意义。
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        DataContext = new ViewModel();
    }
}

public class ViewModel
{
    public ViewModel()
    {
        MyItems = new List<ViewItem>();
        for (int i = 0; i < 10; i++)
            MyItems.Add(new ViewItem { Id = i, AllowDrop = i % 2 == 0 });
    }

    public List<ViewItem> MyItems { get; set; }
}

public class ViewItem
{
    public int Id { get; set; }
    public bool AllowDrop { get; set; }
}