C# MVC设计问题
我有一个使用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
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的角度来看,用户界面与数据是分离的。它必须通过控制器类完成。我需要的是将多个模型源分配给一个视图的某种方式。谢谢你,这正是我需要的。你能给出一个例子吗?添加了一个例子,请注意
窗口。名称
和组合框
的项源
-绑定。这不是一个“定义”的东西,窗口的数据上下文是模型,您拥有的任何模型类的实例,因此职业
必须是模型类中声明的属性。但此处的模型是所选项,它没有任何对查找数据的引用