1

如何WindowChrome在使用MvvmCross时自定义类?

我有这个:

<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 元素都成为 a 的一部分View或发生了什么。调整大小甚至右键单击不可见边框都可以正常工作。有什么方法可以做到这一点,而不必WindowChrome在 a 中重建整个功能View

4

1 回答 1

0

我会自己回答这个问题;
虽然WindowChrome使用MvvmCross创建自定义几乎没有什么区别,但我会继续提出这个问题,希望它可以帮助其他人。

无法在其中显示 UI 元素MvxWindow实际上完全没有问题。只需在您的 UI 中创建 UIView并将WindowChrome.IsHitTestVisibleInChrome属性设置true为您需要的每个元素。在 a或 a中
执行此操作基本上没有区别。你只需要注意你的和你的 UI 现在在两个不同的脚本中。 它可能看起来像这样:在您的 MvxWindow 内部:WindowViewCaptionHeightWindowChrome

<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>
于 2020-10-13T05:48:58.217 回答