Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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/4/wpf/12.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# MVC设计问题_C#_Wpf_Model View Controller_Grid_Datacontext - Fatal编程技术网

C# MVC设计问题

C# MVC设计问题,c#,wpf,model-view-controller,grid,datacontext,C#,Wpf,Model View Controller,Grid,Datacontext,我有一个使用MVC的应用程序。它有一个画布和属性网格。在画布中选择项目时。属性网格应显示其详细信息 因此,我制作了一个事件侦听器,当在画布中选择项时,它将向控制器引发一个事件,控制器将所选项传递到属性网格以显示详细信息 型号: 包含名称、说明的项对象 控制器: protected Controller(object model, FrameworkElement view) { this._model = model; this._view = view; } public v

我有一个使用MVC的应用程序。它有一个画布和属性网格。在画布中选择项目时。属性网格应显示其详细信息

因此,我制作了一个事件侦听器,当在画布中选择项时,它将向控制器引发一个事件,控制器将所选项传递到属性网格以显示详细信息

型号:

包含名称、说明的项对象

控制器:

protected Controller(object model, FrameworkElement view)
{
    this._model = model;
    this._view = view;
}

public virtual void Initialize()
{
    View.DataContext = Model;
}
视图:

<TextBlock>Status</TextBlock>
<ComboBox ItemsSource="?????"/>
状态
其中,“视图”是特性网格,“模型”是选定项

问题在于属性网格中有一个包含查找值的下拉列表,如果属性网格的datacontext已设置为不包含对这些查找项的引用的选定项,如何获取下拉值


我知道使用自定义代码很容易做到这一点。但是我不想违反MVC协议。

绑定到源而不是DataContext,源由,&提供,因此您可以将视图命名为例如,并使用
ElementName
将其作为源,然后可以是
DataContext.LookupValues
或模型中的任何属性(-视图的DataContext是您的模型-)被调用


e、 g



<>强>编辑:< /强>你的问题似乎是你没有传递你需要的信息,考虑一个设计,它仍然允许你访问不仅仅是某个列表的SelectedItem,例如


ContentControl
DataContext
可能是列表框的SelectedItem,但是里面的组合框仍然可以引用窗口的DataContext,它应该提供必要的信息


这与我的第一个示例类似,因为DataTemplate中的DataContext始终是集合的一项,但您可以使用绑定中的源访问外部DataContext。

需要更多信息才能给出合理的答案(这就是为什么至今没有人回复:)。我会这样做:-创建数据接口,比如说,IListProvider可以有一个名为“ProviderList”的方法接受TStringBuilder作为参数-为接口创建一个单例实现类-为上下文创建一个接口属性,并使用该属性选择“正确”的提供程序。尽管如此,我认为您需要概述您的代码:)@Andrea:虽然只花了7分钟…@Andrea:我想到了这一点,但问题是从MVC的角度来看,用户界面与数据是分离的。它必须通过控制器类完成。我需要的是将多个模型源分配给一个视图的某种方式。谢谢你,这正是我需要的。你能给出一个例子吗?添加了一个例子,请注意
窗口。名称
组合框
项源
-绑定。这不是一个“定义”的东西,窗口的数据上下文是模型,您拥有的任何模型类的实例,因此
职业
必须是模型类中声明的属性。但此处的模型是所选项,它没有任何对查找数据的引用