如何解决自定义WindowChrome [Wpf Core 3.1; MvvmCross 7.0.0]
如何在使用 MvvmCross 时自定义WindowChrome
类?
我有这个:
<WindowChrome.WindowChrome>
<WindowChrome CaptionHeight="{x:Static SystemParameters.CaptionHeight}" ResizeBorderThickness="{x:Static SystemParameters.WindowResizeBorderThickness}" />
</WindowChrome.WindowChrome>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock
Grid.Row="0"
Grid.Column="0"
FontSize="32"
Text="SOME UPPER CASE TEXT THAT WILL NEVER BE DISPLAYED" />
</Grid>
在我的MvxWindow
内,并且WindowStyle
设置为none
。
问题是MvxWindow
似乎什么都没显示。这意味着我也无法创建需要的按钮。我不知道 MvvmCross 是否希望每个UI元素都成为View
的一部分,否则还会发生什么。调整大小甚至右键单击不可见的边框都可以。有什么方法可以不必在WindowChrome
内重建整个View
功能吗?
解决方法
我会自己回答;
尽管使用 MvvmCross 创建自定义WindowChrome
几乎没有什么区别,但我会继续提出这个问题,希望对其他人有所帮助。
实际上,根本无法在MvxWindow
中显示UI元素。只需在View
中创建UI,然后为所需的每个元素将WindowChrome.IsHitTestVisibleInChrome
属性设置为true
。
在Window
或View
中执行此操作基本上没有区别。您只需注意CaptionHeight
,因为WindowChrome
和UI现在处于两个不同的脚本中。
看起来可能像这样:
在您的MvxWindow内部:
<WindowChrome.WindowChrome>
<WindowChrome CaptionHeight="{x:Static SystemParameters.CaptionHeight}" ResizeBorderThickness="{x:Static SystemParameters.WindowResizeBorderThickness}" />
</WindowChrome.WindowChrome>
在该窗口显示的视图内:
<Menu Height="{x:Static SystemParameters.WindowCaptionHeight}">
<MenuItem Header="_Exit" WindowChrome.IsHitTestVisibleInChrome="True" />
</Menu>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。