WPF SystemColors: цвет границы TextBox

Посмотрите на мой ответ на на этот вопрос .

Практически так же, как то, что опубликовал LukeH, с одной дополнительной функцией:

Если у вас есть тип, скажем, MyClass, со свойством MyProperty типа int, вы можете написать this:

Expression> e = x => x.MyProperty;

Здесь выражение e.Body равно , а не a MemberExpression, поэтому простое while (me != null) me = me.Expression as MemberExpression не сработает.

Решение состоит в том, чтобы дополнительно проверить, является ли это UnaryExpression с NodeType == Convert или ConvertChecked.

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

7
задан Kjartan 28 July 2015 в 07:01
поделиться

2 ответа

Вы можете попробовать использовать Microsoft.Windows.Themes.ListBoxChrome вместо Border; это то, что используется в шаблоне по умолчанию для TextBox:

<ControlTemplate TargetType="TextBoxBase" 
                 xmlns:mwt="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero">
    <mwt:ListBoxChrome Name="Bd" SnapsToDevicePixels="True">
        <ScrollViewer Name="PART_ContentHost" 
                      SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
    </mwt:ListBoxChrome>
    <ControlTemplate.Triggers>
        <Trigger Property="UIElement.IsEnabled" Value="False">
            <Setter TargetName="Bd" Property="Panel.Background" 
                    Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
            <Setter Property="TextElement.Foreground" 
                    Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

Вы должны иметь возможность использовать только ListBoxChrome вместо Border, вместо того, чтобы повторно создавать TextBox для соответствия представленному вами коду.

4
ответ дан 6 December 2019 в 14:09
поделиться

Я смог получить его программически с:

TextBox.BorderBrush = SystemColors.ControlDarkBrush;
3
ответ дан 6 December 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: