WPF Designer - пользовательские настройки - PullRequest
1 голос
/ 15 сентября 2011

Можно ли определить некоторые настройки для дизайнера wpf?Я хотел бы предложить пользователю 2 режима отображения: «Рисовать все с границами» и «Вид во время выполнения».Мои пользовательские компоненты должны быть в состоянии проверить настройки и нарисовать их самостоятельно.

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

У меня есть предложение, почему бы вам просто не добавить 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"/>
0 голосов
/ 15 сентября 2011

Я думаю, Шаблон стратегии может помочь вам здесь.Определите один abstract базовый класс с общими предпочтениями и определите несколько конкретных классов, производных от него.Каждый конкретный класс будет определять некоторые политики (могут также override некоторые), такие как рамка без рамки, цвета, темы и т. Д., Которые вы можете использовать в своем представлении.Вы можете изменить предпочтения во время выполнения, если вы получите доступ к предпочтениям, используя ссылку на базовый класс, тип времени выполнения которого будет одним из конкретных классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...