【问题标题】:Assigning a float to a decimal property via a style setter in WPF通过 WPF 中的样式设置器将浮点数分配给十进制属性
【发布时间】:2010-05-11 21:06:19
【问题描述】:

我在模板中有以下 xaml 用于无外观控件:

<Style x:Key="NumericUpDownStyle" TargetType="controls:NumericUpDown">
    <Style.Setters>
        <Setter Property="Change" Value="{x:Static local:Preferences.ChangeAmount}"/>
    </Style.Setters>
</Style>

其中NumericUpDown 控件上的Change 属性是小数,而静态Preferences.ChangeAmount 是浮点数。

这会失败并出现以下错误:

“1”不是属性“更改”的有效值

有没有办法让样式将浮点数转换为小数?不能更改NumericUpDown 控件、我正在模板化的底层控件或Preferences.ChangeAmount 属性。我可以在某处制作一些静态包装器属性来进行强制转换,但这对我来说似乎很愚蠢。

有什么想法吗?

【问题讨论】:

    标签: wpf xaml casting styles setter


    【解决方案1】:

    您可以尝试将其包装在 Binding 中,而不是直接使用 {x:Static ...} 标记扩展:

    <Setter Property="Change" Value="{Binding Source={x:Static local:Preferences.ChangeAmount}, Mode=OneWay}"/>
    

    这可能已经起作用了,因为 Binding 通常会处理必要的转换。如果不起作用,您可以在Binding 中添加适当的IValueConverter

    为了提高性能,您还可以将Mode 属性设置为OneTime 而不是OneWay。但是,我不确定这是否可行。祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 2018-05-07
      • 2012-03-01
      • 2018-09-01
      • 1970-01-01
      相关资源
      最近更新 更多