我的理解是,当你接受观点并说: myView.DataContext = myViewModel;
您可以分配它应该引用的类,就像大多数应用程序中的代码隐藏一样。我一直很喜欢这个设计,但是在哪里放置真正不属于你的视图模型的显示类型逻辑呢?例如,假设您要根据项目的状态修改项目的上下文菜单。在过去,我使用转换器处理了不同的显示功能。我打算使用Views本机代码,但后来我意识到我不认为我可以访问它吗?
答案 0 :(得分:0)
通常,您的列表中的每个项目都有一个模型对象。然后将每个模型包装在视图模型中。然后,视图模型将公开您描述的属性(颜色,字体等)和触发属性更改通知的属性。希望有所帮助。
答案 1 :(得分:0)
我的假设是为View设置DataContext与将其指向文件后面的不同代码是不正确的。 DataContext用于绑定目的。您仍然可以在正常代码中引用方法,如下所示:
<CheckBox Margin="5,0,30,0"
x:Name="OSHPD" IsChecked="{Binding OSHPD}"
Validation.ErrorTemplate="{x:Null}" Checked="OSHPD_Checked" Unchecked="OSHPD_Unchecked">OSHPD Approval</CheckBox>
private void OSHPD_Checked(object sender, RoutedEventArgs e)
{
FM.IsEnabled = false;
}
private void OSHPD_Unchecked(object sender, RoutedEventArgs e)
{
FM.IsEnabled = true;
}
数据绑定IsChecked =&#34; {绑定OSHPD}&#34;当事件Checked =&#34; OSHPD_Checked&#34;正在击中ViewModel未选中=&#34; OSHPD_Unchecked&#34;引用后面的Views代码。
答案 2 :(得分:0)
后面的View代码中的大多数内容也可以包含在ValueConverter,Behavior或AttachedProperty中。其中每个都能够访问控制级属性。通常,您可以使用颜色/画笔/形状和其他视图特定数据等值来提供这些值,以便在您确实发现需要重用它时保持valueConverter / behavior / AttachedProperty通用。