WPF设计器 - 用户定义的设置

时间:2011-09-15 14:26:00

标签: c# wpf

是否可以为wpf设计器定义一些设置? 我想为用户提供2种显示模式:“绘制带边框的所有内容”和“运行时视图”。 然后,我的自定义组件应该能够检查设置并相应地绘制自己。

2 个答案:

答案 0 :(得分:1)

我有一个建议,为什么不添加一个DependencyProperty你的自定义组件将是“DisplayMode”,并且取决于开发人员放入属性(来自Xaml或C#)自定义组件将呈现的方式你想要吗?

    public static readonly DependencyProperty DisplayModeProperty = DependencyProperty.Register(
          "DisplayMode", typeof(int), typeof(DisplayModeProperty), new PropertyMetadata(1, OnModeChanged));

    public bool DisplayMode
    {
        private get { return (bool)GetValue(DisplayModeProperty); }
        set { SetValue(DisplayModeProperty, value); }
    }
    private static void OnModeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        ((MyCustomComponent)d).OnModeChanged(e);
    }
    private void OnModeChanged(DependencyPropertyChangedEventArgs e)
    {
        int mode = Convert.ToInt32(e.NewValue);
        if(mode == 1)
        {
        //... Render for the Mode 1
        }
        else
        {
        //... Render for the Mode 2
        }

    }

在Xaml中:

 <cust:MyCustomCompoenent DisplayMode="1"/>

答案 1 :(得分:0)

我认为Strategy Pattern可以帮到你。使用公共首选项定义一个 abstract 基类,并定义从中派生的多个具体类。每个具体类都将定义一些策略(也可以override一些),例如边框或无边框,颜色,主题等,您可以在视图中使用它们。如果使用基类引用访问首选项,则可以在运行时更改首选项,基类引用的运行时类型将是具体类之一。