gpt4 book ai didi

wpf - 如何在 WPF 中的对话框单位中指定单位?

转载 作者:行者123 更新时间:2023-12-04 13:48:58 25 4
gpt4 key购买 nike

我试图弄清楚如何使用正确的对话框单元(DLU)在 WPF 中布局一个简单的对话框。

我想出了一个简单的r例如,这直接解决了问题:

enter image description here

您可以查看Windows UX Guidelines看看这些测量是从哪里来的。
简短的版本是:

  • dlu = 对话单元
  • dlu 基于字体大小(项目随用户字体大小而变化)
  • 水平 dlu 与垂直 dlu 不同(dlu 不是方形的)

  • 这来自对话单元的定义:平均字符高 8dlus,宽 4dlus。

    格鲁吉亚 14pt:

    enter image description here

    如果您使用较小的字体(即 8pt Tahoma 与 14pt Georgia),则 dlus 会变小:

    Segoe UI 9pt:

    enter image description here

    备注 :您会注意到分辨率(即 dpi)对讨论没有影响。

    最佳答案

    您可以尝试创建一个 Converter它返回乘以 DLU 的值

    例如,我创建了一个 MathConverter (代码是 here )它可以让你指定类似的东西

    <Button Height="{Binding Source={x:Static local:Settings.VerticalDLU,
    Converter={StaticResource MathConverter},
    ConverterParameter=@VALUE*14}"

    Width="{Binding Source={x:Static local:Settings.HorizontalDLU,
    Converter={StaticResource MathConverter},
    ConverterParameter=@VALUE*50}" />

    为了更容易编写和阅读,您可以创建一个继承自 Binding 的类并设置默认绑定(bind)属性,因此您所要做的就是
    <Button Height="{local:MyVDluBinding Source=14}"
    Width="{local:MyHDluBinding Source=50}" />

    我从未尝试用 Converter 的默认值覆盖绑定(bind)和 ConverterParameter ,但我已经覆盖了一个用于验证目的的绑定(bind),所以我相信这是可能的。
    ValidationBinding我创建的可以像 Text="{local:ValidationBinding MyProperty}" 一样使用并自动设置 ValidatesOnDataError=True, ValidatesOnException=True, UpdateSourceTarget=PropertyChanged在绑定(bind)中。

    关于wpf - 如何在 WPF 中的对话框单位中指定单位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7147716/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com