当Visiblity的Fallbackvalue设置为'Hidden'时,在设计器中显示一个控件

时间:2018-01-05 10:02:33

标签: wpf xaml visual-studio-2017 designer

在几个视图中,我们有容器组件 - 例如GridScrollViewer - 它们绑定到自己的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代码显示它们。

编辑1

我找到了this回答。设置Hidden没有帮助。无论是在d:IsHidden="false"属性之前还是之后设置它。

1 个答案:

答案 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文章。

相关问题