当可见性的回退值设置为 'Hidden' 时在设计器中显示控件

Show a control in designer when the Visiblity's Fallbackvalue is set to 'Hidden'

在几个视图中,我们有容器组件 - 例如 GridScrollViewer- 绑定到它们自己的 ViewModel 或 ViewModelItem 上的 属性。

在某些情况下,包含这些组件的视图(父视图)可以在未初始化组件的 ViewModel/ViewModelItem 的情况下显示。为避免向用户显示空数据网格,我们使用 FallBackValue=Hidden 来确保仅在 ViewModel/ViewModelItem 为 initialized/loaded.

时显示容器

一个假设的例子是 Window 包含 DataGrid 和右侧更详细的视图。详细视图将是它自己的 UserControl 和它自己的 ViewModel,并且 DataGrid 也会有它自己的 ViewModel。当打开说 Window 时,DataGrid 的 ViewModel 将立即加载 - 但由于没有选择任何行,属于详细视图的 ViewModel 不会被初始化,这意味着 Visibility 详细视图的绑定将失败,绑定的 FallbackValue 将用于隐藏详细视图。 这种方法的问题是 Visual Studio WPF/XAML 设计器不会显示受影响容器的内容,因为它们由于其 FallbackValue 而被隐藏。

问题:有没有办法让设计者显示特定的 controls/components,其中 Visibility 绑定的 FallBackValue 设置为 Hidden?单击这些隐藏容器内的 XAML 代码 不会 显示它们。


编辑 1

我找到了 this 答案。设置 d:IsHidden="false" 没有帮助。不管它是在 Visibility 属性.

之前还是之后设置的

对于设计器,您必须设置设计数据上下文。
为此,您通常会在 xaml 文件中执行以下操作:

<Control, Page or Window
    xmlns:vm="clr-namespace:VM.ViewModel"
    d:DataContext="{d:DesignInstance {x:Type vm:YourViewModelNameHere}, IsDesignTimeCreatable=True}" 
    .../>  

但是,有时像您的情况一样,复杂的 ViewModel 需要更大的灵活性。为此,我会使用 Blend 及其功能,它会为您生成虚拟数据并为您设置控件的数据上下文。
有关详细信息,请参阅这篇 MSDN 文章。