在 ViewBox 内缩放 ComboBox 弹出窗口

Posted

技术标签:

【中文标题】在 ViewBox 内缩放 ComboBox 弹出窗口【英文标题】:Scaling ComboBox Popup inside ViewBox 【发布时间】:2020-03-03 10:13:57 【问题描述】:

我正在开发一个 UWP 应用程序,并注意到 ComboBox 元素(只是弹出窗口)在放置在 ViewBox 中时缩放不正确。下面是它的外观:

此外,由于 ComboBox 检测似乎偏离了实际的鼠标位置,因此选择了错误的元素。 ComboBox 与网格内的其他元素并排放置(它是 ViewBox 的直接子元素)。其他一切都可以正常工作并且无需拉伸即可扩展。

有什么办法可以在保留 ViewBox 的同时解决这个问题? 提前致谢!

编辑:

    <Viewbox>
        <Grid Width="1920" Height="1280" HorizontalAlignment="Center">
            <ComboBox HorizontalAlignment="Center" VerticalAlignment="Center" Width="200" Height="50">
                <ComboBoxItem Content="Test123"></ComboBoxItem>
                <ComboBoxItem Content="Test456"></ComboBoxItem>
                <ComboBoxItem Content="Test789"></ComboBoxItem>
            </ComboBox>
        </Grid>
    </Viewbox>

这几乎就是我想要做的所有事情,我需要调整应用程序的大小并且只支持特定的分辨率 (1920x1280)。不过,它需要以某种方式适应所有可能的 Windows 缩放设置。

【问题讨论】:

您好,请提供您的代码或 XAML,以便我们提供帮助。 @CorentinPane 抱歉,已编辑 【参考方案1】:

它seems to be a bug 最近由 Windows 团队推出。链接帖子中建议的修复方法之一是在 ViewBox 上添加不可见的旋转:

<Viewbox>
    <Viewbox.RenderTransform>
        <RotateTransform Angle="0.001"></RotateTransform>
    </Viewbox.RenderTransform>
    <Grid Width="1920" Height="1280" HorizontalAlignment="Center">
        <ComboBox HorizontalAlignment="Center" VerticalAlignment="Center" Width="200" Height="50">
            <ComboBoxItem Content="Test123"></ComboBoxItem>
            <ComboBoxItem Content="Test456"></ComboBoxItem>
            <ComboBoxItem Content="Test789"></ComboBoxItem>
        </ComboBox>
    </Grid>
</Viewbox>

这肯定很恶心,这就是为什么 Microsoft 建议关注 this guide 以寻找替代想法(没有 ViewBox 不应该用于保持应用响应)。

【讨论】:

非常感谢!奇怪的解决方法,但它解决了我的问题。

以上是关于在 ViewBox 内缩放 ComboBox 弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

【缩放】实现svg以鼠标为焦点缩放

带有 viewBox 和宽度的 SVG 在 IE 中无法正确缩放高度

ViewBox.set Limits() 的缩放参数如何工作?

如何在 WPF Viewbox 中保持恒定的 FontSize?

如何在没有 viewbox 属性的情况下制作 SVG 比例?

如何在 <svg> 标签内显示 PNG 图像?