【问题标题】:Is float type supported in uwp xaml?uwp xaml 中是否支持浮点类型?
【发布时间】:2019-10-17 05:58:36
【问题描述】:

我正在将 C# WPF 组件转换为 UWP,它包含具有浮点类型属性的类。

当尝试在 xaml 中设置值时,Visual Studio xaml 编辑器会报错:“无法将 'System.Double' 类型的对象转换为 'System.Single' 类型。 运行时:无法转换为 Windows.Foundation.Single。

双打效果很好。

UWP ScrollViewer 具有例如MinZoomFactor 属性,它是浮动的,它不会产生任何问题。

UIElement 也有 Rotation 属性,它是浮动的。

所以有人会猜测浮动应该是可能的,但如果有的话,该怎么做呢?

阅读一些文档,这表明不支持浮动,这对于 ScrollViewer 和 UIElement 来说有点奇怪。

https://docs.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/xaml-cust-ctrl

这是来自测试项目如何定义浮动属性。

public static DependencyProperty ValueProperty =
    DependencyProperty.Register(
        "Value",
        typeof(float),
        typeof(FloatContainer),
        new PropertyMetadata(0.0f, new PropertyChangedCallback(ValueChanged)));

public float Value
{
    get { return (float)GetValue(ValueProperty); }
    set { SetValue(ValueProperty, value); }
}

【问题讨论】:

  • 是的,好像 float DependencyProperty 不能在 XAML 中设置。你为什么不去加倍呢?
  • 谢谢。该组件是多平台的,因此对于旧平台会有向后兼容性,除非包装在特定于平台的标志下。这很费力,但可行。关于 ScrollViewer 如何浮动的任何见解?

标签: c# xaml uwp


【解决方案1】:

uwp xaml 中是否支持浮点类型?

现在,Scrollviewer 的源代码在 GitHub 中可用。 ScrollViewer 在处理其属性的 float 和 dobule 类型时似乎具有独特的机制。

如您的case 中所述。

如果您想要浮点类型的 DP,则将其设为双精度(MIDL 3.0 中为双精度)。声明并实现浮点类型的 DP(MIDL 中的单),然后在 XAML 标记中为该 DP 设置一个值,会导致错误无法从文本“”创建“Windows.Foundation.Single”。

我们仍然建议使用双重依赖属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多