我是新来的WPF。我读了很多关于WPF和依赖性属性的文章。我对依赖性属性的理解是将属性绑定到XAML (XAML是目标)。我设想了一个程序,其中一个配置窗口将控制程序其余部分的所有可视元素(字体、字体大小、颜色等)。
在第一次尝试中,我创建了一个单独的窗口,该窗口将包含所有不同的配置选项。这失败是因为我无法弄清楚如何在单独的XAML文件中使用依赖项属性。
此外,依赖项属性只能在直接或间接实现DependecyObject类的类中注册。我如何知道哪个wpf对象实现了它?看来窗户没有,但我可能错了。我的第二次尝试是在顶部窗口注册依赖项,这样整个视觉树就可以访问它了。我有异常被抛出,我唯一能想到的就是窗口没有实现到DependencyObject。(我可能弄错了,而视觉树的事情对我来说仍然是个谜。我正在学习)
所以现在我不知所措。我所尝试的是否可能?这个项目的全部目的是帮助我学习WPF,现在我想知道我是否应该降低对WPF所能完成的任务的期望。
编辑:
什么样的例外?你想做什么?你能粘贴一些代码吗?
public partial class MainWindow : Window {
public Color BackColor {
get { return (Color)GetValue(BackColorProperty); }
set { SetValue(BackColorProperty, value); }
}
public static readonly DependencyProperty BackColorProperty =
DependencyProperty.Register("BackColor",typeof(Color),typeof(MainWindow),
new UIPropertyMetadata(0));似乎是Color导致了异常。我将其更改为int,没有抛出任何异常。那么,原语类型只能注册吗?
WPF是一个框架,可以帮助您创建非常好看的应用程序(还包括打印等)。你想做什么?它应该是视觉树的一部分吗?
再说一遍,这个项目只是为了让我学习WPF。我的想法是创建一个具有不同页面的主UI。配置按钮将弹出一个窗口,其中包含更改字体、字体大小、背景色等选项。当用户进行更改时,这些更改将应用于主UI中。我的问题是如何访问注册配置类之外的这些依赖项属性?我如何有一个窗口可以有滑块和组合框,而任何其他类都可以访问这些配置设置?
简单地说,我希望单个配置(字体和颜色)以某种方式被所有UI继承。该配置可以被用户更改和查看。
发布于 2011-05-02 03:40:48
我们不能在这里解决学习一个全新的框架和设计你的整个程序的重大任务。这需要时间。它可能令人望而生畏,但要坚持下去。
至于你的例外,问题是神秘的:
UIPropertyMetadata(0)实际上是为依赖项属性提供默认值,该值必须与Register的第二个参数中指定的类型相匹配。由于0是一个整数,而您的属性是一个Color,所以依赖属性子系统会抛出一个异常。相反,您可以使用:
UIPropertyMetadata(new Color())或任何其他颜色作为默认值。
https://stackoverflow.com/questions/5852486
复制相似问题