在几个视图中,我们有容器组件 - 例如Grid
或ScrollViewer
- 它们绑定到自己的ViewModel或ViewModelItem上的属性。
在某些情况下,可以显示包含这些组件的View(父级),而不会初始化组件的ViewModel / ViewModelItem。为了避免向用户显示空数据网格,我们使用FallBackValue=Hidden
来确保仅在初始化/加载ViewModel / ViewModelItem时显示容器。
一个假设的例子是Window
包含DataGrid
和更详细的右视图。详细视图将是其自己的UserControl
及其自己的ViewModel,而DataGrid
也将拥有自己的ViewModel
。打开Window
时,DataGrid
的ViewModel会立即加载 - 但由于没有选择任何行,因此属于详细视图的ViewModel不会初始化,这意味着{{1}绑定详细信息视图将失败,绑定的Visibility
将用于隐藏详细信息视图。
此方法的问题是Visual Studio WPF / XAML设计器不会显示受影响容器的内容,因为它们的FallbackValue会被隐藏。
问题:有没有办法让设计人员显示FallbackValue
FallBackValue
绑定设置为Visibility
的特定控件/组件?单击这些隐藏容器中的XAML代码不显示它们。
我找到了this回答。设置Hidden
没有帮助。无论是在d:IsHidden="false"
属性之前还是之后设置它。
答案 0 :(得分:1)
对于设计师,您必须设置设计数据上下文 为此,您通常会在xaml文件中执行以下操作:
<Control, Page or Window
xmlns:vm="clr-namespace:VM.ViewModel"
d:DataContext="{d:DesignInstance {x:Type vm:YourViewModelNameHere}, IsDesignTimeCreatable=True}"
.../>
但是,有时候在您的情况下,复杂的ViewModel需要更大的灵活性。为此,我将使用Blend
及其功能,它将为您生成虚拟数据并为您设置控件的数据上下文。
有关详细信息,请参阅此MSDN文章。