在几个视图中,我们有容器组件(例如Grid或ScrollViewer),它们绑定到自己的ViewModel或ViewModelItem上的属性。
在某些情况下,可以在不初始化组件的ViewModel/ViewModelItem的情况下显示包含这些组件的View (父)。为了避免显示用户的空数据,我们使用FallBackValue=Hidden来确保容器只在它的ViewModel/ViewModelItem初始化/加载时显示。
一个假设的例子是包含一个Window和更详细的右边视图的DataGrid。详细的视图是自己的UserControl和自己的ViewModel,DataGrid也有自己的ViewModel。当打开“表示Window”时,ViewModel of DataGrid将立即加载--但由于没有选择任何行,属于“详细视图”的ViewModel不会被弱化,这意味着详细视图的Visibility绑定将失败,而绑定的FallbackValue将用于隐藏详细视图。这种方法的问题是Visual /XAML设计器将不会显示受影响容器的内容,因为它们由于其FallbackValue而被隐藏。
问:是否有一种方法可以让设计人员显示特定的控件/组件,这些控件/组件将FallBackValue的Visibility绑定设置为Hidden?单击这些隐藏容器中的XAML代码不会显示它们。
编辑1
我找到了这的答案。设置d:IsHidden="false"没有帮助。无论是在Visibility属性之前还是之后设置它。
发布于 2018-01-05 12:58:34
当涉及到设计器时,您必须设置设计数据上下文。
要做到这一点,通常需要在xaml文件中执行以下操作:
<Control, Page or Window
xmlns:vm="clr-namespace:VM.ViewModel"
d:DataContext="{d:DesignInstance {x:Type vm:YourViewModelNameHere}, IsDesignTimeCreatable=True}"
.../> 但是,有时就像在您的例子中一样,复杂的ViewModel需要更多的灵活性。为此,我将使用Blend及其功能,即它将为您生成虚拟数据,并为您设置控件的数据上下文。
有关更多信息,请参阅这篇MSDN文章。
https://stackoverflow.com/questions/48111207
复制相似问题