依赖属性的SetValue需要一个对象:如何设置FontSizeProperty?
问题描述:
问这个的另一种方式是说:依赖属性的SetValue需要一个对象:如何设置FontSizeProperty?
“如何设置的目的是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);
}
}
}
当我建立的应用程序,它成功了!
但是,当我调试,它抛出参数异常如下所示:
为什么我收到此错误和/或如何解决呢?
答
就在你的价值的末尾添加” .0" 告诉编译器它应该是一个双:
TextBlock1.SetValue(FontSizeProperty, 24.0);
你也可以用‘d’后缀:
TextBlock1.SetValue(FontSizeProperty, 24d);
尽可能地,您应该使用强类型属性而不是依赖项属性。这样,您就可以使用隐式转换,只要有可能,类型错误将在编译时被捕获:
TextBlock1.FontSize = 24;
幕后的属性将更新依赖项属性。因此,您可以获得完全相同的功能,但具有类型安全性。
为什么会有人downvote我的问题,然后至少没有礼貌留下评论? – ihodonald
为什么不直接调用'TextBlock1.FontSize = 24;'? – Clemens
@Clemens - 因为这是.NET代码。我想要XAML依赖项属性,因为它们给应用程序更多的功能。 – ihodonald