WPF Design-time свойство - PullRequest
       7

WPF Design-time свойство

0 голосов
/ 18 января 2019

Я создал UserControl, который в основном представляет собой сетку, которая может иметь либо закругленные углы на каждом конце, либо определенный многоугольник. У меня есть свойство Rounded, которое меняет видимость округленной границы и полигона, чтобы соответствовать (если кто-то устанавливает Rounded = "True", то округленная граница видима, а многоугольник скрыт, и наоборот.

Так же, как в этом вопросе: UserControl Dependency Свойство время разработки

... он отлично работает во время выполнения, но я не могу заставить его отражать изменения во время разработки. Однако перезапуск VS, очистка решения, перестройка, изменение цели сборки и т. Д. - ни один из этих шагов, похоже, не имеет значения. Мой класс довольно прост:

public partial class MyBox : UserControl
{
    public MyBox()
    {
        InitializeComponent();
    }

    public bool Rounded
    {
        get { return (bool)GetValue(RoundedProperty); }
        set
        {
            SetValue(RoundedProperty, value);
            this.edgeRounded.Visibility = (value ? Visibility.Visible : Visibility.Hidden);
            this.edgePolygon.Visibility = (value ? Visibility.Hidden : Visibility.Visible);
        }
    }

    public static readonly DependencyProperty RoundedProperty = DependencyProperty.Register("Rounded", typeof(bool), typeof(MyBox), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
}

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Я заставил это работать, добавив измененный обработчик событий, а затем изменив регистрацию свойства зависимостей для ссылки на него.Мой рабочий код:

public partial class MyBox : UserControl
{
    public MyBox()
    {
        InitializeComponent();
    }

    public bool Rounded
    {
        get { return (bool)GetValue(RoundedProperty); }
        set { SetValue(RoundedProperty, value); }
    }

    public static readonly DependencyProperty RoundedProperty = DependencyProperty.Register("Rounded", typeof(bool), typeof(MyBox), new PropertyMetadata(false, RoundedChanged));

    private static void RoundedChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
    {
        bool value = (bool)e.NewValue;
        MyBox thisMyBox = (MyBox)sender;

        // Hide/show the edges
        thisMyBox.edgeRounded.Visibility = (value ? Visibility.Visible : Visibility.Hidden);
        thisMyBox.edgePolygon.Visibility = (value ? Visibility.Hidden : Visibility.Visible);
    }
}
0 голосов
/ 18 января 2019

Возможно, используйте XAML, чтобы связать свойство видимости с моделью представления текстового контекста. Я сделал это со всеми видами вещей.

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