我喜欢Prism 5.0 Interactivity的工作方式,但它只能打开UserControls
和Panels
,并在其创建的Window
内。因此,由于无法将Window
置于另一个Window
内,因此您无法为以Window
为根元素的视图传递视图。
问题是,当我将UserControl
放入其创建的Window
内时,Window
没有MinWidth
或MinHeight
或{{{} 1}}选项被选中,因此,用户界面变得可怕。
有没有办法控制ResizeMode="NoResize"
的属性,以便我可以根据需要自定义它?
根据要求,这里有一个代码示例:
为了在Prism中的新Window
中打开一个视图,你必须将它添加到当前视图中(该视图将调用其中创建的新Window
{{ 1}}):
Window
如果您将此ViewModel
从 <prism:InteractionRequestTrigger SourceObject="{Binding ItemSelectionRequest, Mode=OneWay}">
<!-- This PopupWindowAction has a custom view defined. When this action is executed the view will be shown inside a new window -->
<!-- Take into account that the view and its view model are created only once and will be reused each time the action is executed -->
<prism:PopupWindowAction>
<prism:PopupWindowAction.WindowContent>
<views:ItemSelectionView />
</prism:PopupWindowAction.WindowContent>
</prism:PopupWindowAction>
</prism:InteractionRequestTrigger>
更改为ItemSelectionView
,您将收到以下异常:
因为基本上Prism会在创建新UserControl
和新Window
时尝试将Window
置于Window
内,并尝试将其中一个置于另一个内。 ..和Window
总是被认为是根,但在这种情况下,ItemSelectionView
Windows
将被放置为新Window
的子项。
有关其工作原理的更多信息,请转到我发布的链接。
现在我正在使用后面的代码来调整窗口,我检查这个ItemSelectionView
是否是Window的根,只有在这种情况下我才会使用Window
设置(这不是理想,但仍然不违反MVVM):
UserControl
答案 0 :(得分:0)
有一个非常简单的解决方案。
由于PopupWindowAction
将包装器窗口创建为Window
类的实例,因此您可以将默认样式应用于 app.xaml Window类型>
<Application.Resources>
<Style TargetType="{x:Type Rectangle}"/>
<Style TargetType="{x:Type Window}">
<Setter Property="Width" Value="500"/>
<Setter Property="ResizeMode" Value="NoResize"/>
<Setter Property="ShowInTaskbar" Value="False"/>
</Style>
</Application.Resources>