Отображать прямоугольник в дизайнере при использовании триггеров для ширины и высоты - PullRequest
0 голосов
/ 08 декабря 2018

В моей программе мне нужно изменить ширину и высоту прямоугольника в зависимости от значения свойства.

С помощью источника данных я не могу указать начальную ширину и высоту прямоугольника, так как это переопределяет его.

Как отобразить прямоугольник в конструкторе, не переопределяя источник данных?

<Rectangle Fill="{StaticResource Atom_Color_Blue}" Margin="5,0,0,0" Stroke="#181a1f" StrokeThickness="1">
    <Rectangle.InputBindings>
        <MouseBinding Gesture="LeftClick" Command="{Binding CommandSetColor}" CommandParameter="Blue" />
    </Rectangle.InputBindings>
    <Rectangle.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding NewTaskColor}" Value="Blue">
                    <Setter Property="Rectangle.Width" Value="18" />
                    <Setter Property="Rectangle.Height" Value="18" />
                </DataTrigger>
                <DataTrigger Binding="{Binding NewTaskColor}" Value="None">
                    <Setter Property="Rectangle.Width" Value="16" />
                    <Setter Property="Rectangle.Height" Value="16" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Rectangle.Style>
</Rectangle>

1 Ответ

0 голосов
/ 08 декабря 2018

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

    <Rectangle Fill="Blue" Margin="5,0,0,0" Stroke="#181a1f" StrokeThickness="1">
        <Rectangle.InputBindings>
            <MouseBinding Gesture="LeftClick" Command="{Binding CommandSetColor}" CommandParameter="Blue" />
        </Rectangle.InputBindings>
        <Rectangle.Style>
            <Style>
                <Setter Property="Rectangle.Width" Value="18" />
                <Setter Property="Rectangle.Height" Value="18" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding NewTaskColor}" Value="Blue">
                        <Setter Property="Rectangle.Width" Value="18" />
                        <Setter Property="Rectangle.Height" Value="18" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding NewTaskColor}" Value="None">
                        <Setter Property="Rectangle.Width" Value="16" />
                        <Setter Property="Rectangle.Height" Value="16" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Rectangle.Style>
    </Rectangle>

Обратите внимание на два сеттера, которые я добавил.

        <Style>
            <Setter Property="Rectangle.Width" Value="18" />
            <Setter Property="Rectangle.Height" Value="18" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...