Как сделать 100% непрозрачным, даже если контроль отключен в wpf C#

У меня есть текстовое поле в моем wpf, когда я отключаю его, непрозрачность уменьшается. Это происходит, чтобы сообщить пользователю, что текстовое поле не включено. Есть ли способ отключить элемент управления и сохранить внешний вид?

1 ответ

Решение

Установить Template собственность по вашему вкусу ControlTemplate:

<TextBox IsEnabled="False" Margin="10">
    <TextBox.Template>
        <ControlTemplate TargetType="{x:Type TextBox}">
            <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
                <ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
            </Border>
            <ControlTemplate.Triggers>
                <!--<Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Opacity" TargetName="border" Value="0.56"/>
                        </Trigger>-->
                <Trigger Property="IsMouseOver" Value="true">
                    <Setter Property="BorderBrush" TargetName="border" Value="#FF7EB4EA"/>
                </Trigger>
                <Trigger Property="IsKeyboardFocused" Value="true">
                    <Setter Property="BorderBrush" TargetName="border" Value="#FF569DE5"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </TextBox.Template>
</TextBox>

Использование IsHitTestVisible="False" вместо IsEnabled="False"

Другие вопросы по тегам