我有两个clasess,MainWindow
和MainWindow_ViewModel
。
MainWindow
的定义如下:
public partial class MainWindow : Window
{
static public MainWindow wn;
public MainWindow_ViewModel mwvm;
public MainWindow()
{
InitializeComponent();
wn = this;
mwvm = new MainWindow_ViewModel();
}
}
MainWindow_ViewModel的定义如下:
class MainWindow_ViewModel
{
private List<String> _filtros;
public List<String> filtros
{
get
{
return _filtros;
}
}
public MainWindow_ViewModel()
{
_filtros = new List<String>();
_filtros.add("Filtro1");
_filtros.add("Filtro2");
_filtros.add("Filtro3");
}
}
请注意,没有任何静态方法或属性。
在MainWindow的XAML中,我有一个ListBox,我想与mwvm.filtros
绑定,它应该可以从代码隐藏中直接使用。
MainWindow.wn.mwvm.filtros
。答案 0 :(得分:2)
是的,当然。您不需要C#代码来绑定视图模型。只需在DataContext
元素中创建一个对象:
<Window.DataContext>
<local:MainWindow_ViewModel />
</Window.DataContext>
您必须为本地项目创建命名空间。完整代码:
<Window x:Class="Your.Namespace.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Your.Namespace"
>
<Window.DataContext>
<local:MainWindow_ViewModel />
</Window.DataContext>
除非您传递它或使其静止,否则您无法绑定其他Window
或Control
。如果它是此Window
的子控件,则可以设置其数据上下文。