SetValue for Dependency Property需要一个对象:如何设置FontSizeProperty?

时间:2017-07-01 11:06:24

标签: c# wpf xaml dependency-properties

另一种询问方式是:

"如何将对象的值设置为24,以便我可以将其作为参数传递给SetValue()' value ?参数"

要明确:我只是想在后面的代码中设置依赖项属性的值

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Foo {

  public partial class MainWindow : Window {
    public MainWindow() {
      InitializeComponent();

      TextBlock1.Text = "bar";

      TextBlock1.SetValue(FontSizeProperty, 24);
    }
  }
}

当我构建应用时,它会成功!

但是当我调试时,它会抛出一个Argument Exception,如下所示:

Argument Exception because my value is not an object

为什么我收到此错误和/或我该如何解决?

1 个答案:

答案 0 :(得分:3)

FontSize expects a double

只需在值的末尾添加“.0”,告诉编译器它应该是双重的:

TextBlock1.SetValue(FontSizeProperty, 24.0);

您也可以使用“d”后缀:

TextBlock1.SetValue(FontSizeProperty, 24d);

尽可能使用强类型属性而不是依赖属性。这样,您可以尽可能使用隐式转换,并在编译时捕获类型错误:

TextBlock1.FontSize = 24;

在幕后,属性将更新依赖项属性。因此,您可以获得完全相同的功能,但具有类型安全性。