簡體   English   中英

WPF文本框觸發器IsMouseOver

[英]WPF Textbox Trigger IsMouseOver

現在使用wpf中的樣式是如此困難。 為什么觸發器不起作用???

<TextBox x:Name="txbUsername" VerticalAlignment="Center" HorizontalAlignment="Center"
                 Width="350" Height="20" Margin="5 0 0 0" BorderThickness="0 0 0 1" Background="#eff0f1">
            <TextBox.Style>
                <Style TargetType="{x:Type TextBox}">
                    <Setter Property="FontSize" Value="14"></Setter>
                    <Setter Property="FontFamily" Value="Verdana, Geneva, sans-serif"></Setter>
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="BorderThickness" Value="0 0 0 1"></Setter>
                            <Setter Property="BorderBrush" Value="#a70711"></Setter>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>

您需要定義一個自定義ControlTemplate

<TextBox x:Name="txbUsername" VerticalAlignment="Center" HorizontalAlignment="Center"
         Width="350" Height="20" Margin="5 0 0 0" BorderThickness="0 0 0 1" Background="#eff0f1">
    <TextBox.Style>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="FontSize" Value="14"></Setter>
            <Setter Property="FontFamily" Value="Verdana, Geneva, sans-serif"></Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <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="IsKeyboardFocused" Value="true">
                                <Setter Property="BorderThickness" Value="0 0 0 1"></Setter>
                                <Setter Property="BorderBrush" Value="#a70711"></Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </TextBox.Style>
</TextBox>

原因是默認ControlTemplate中定義了一些觸發器,這些觸發器不能通過簡單地定義一些自定義Style觸發器來覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM