【问题标题】:GotMouseCapture via XAML通过 XAML 获取鼠标捕获
【发布时间】:2015-06-18 14:27:31
【问题描述】:

这是我的button 风格:

<Style x:Key="NoBorderButton" TargetType="Button">
    <Setter Property="Foreground" Value="White" />
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="BorderBrush" Value="Transparent" />
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="FontSize" Value="15" />
    <Style.Triggers>
        <Trigger Property="Control.IsMouseOver" Value="true">
            <Setter Property="Control.FontSize" Value="18" />
            <Setter Property="Foreground" Value="LightSkyBlue" />
        </Trigger>
        <Trigger Property="Control.IsMouseOver" Value="false" >
            <Setter Property="Foreground" Value="White" />
        </Trigger>
    </Style.Triggers>
</Style>

我想在我的button 中添加另一个TriggerGotMouseCaptureLostMouseCapture,但我没有找到它,只能通过后面的代码:

private void btnClose_LostMouseCapture(object sender, MouseEventArgs e)
{
    btnClose.Foreground = Brushes.White;
}

private void btnClose_GotMouseCapture(object sender, MouseEventArgs e)
{
    btnClose.Foreground = Brushes.DarkGray;
}

【问题讨论】:

    标签: wpf button styles


    【解决方案1】:

    您可以使用EventTrigger,这是一个示例:

    <EventTrigger RoutedEvent="GotMouseCapture">
        <BeginStoryboard>
            <Storyboard>
                <ColorAnimation Storyboard.TargetProperty="Foreground"
                                To="DarkGray"
                                Duration="0:0:0"/>
            </Storyboard>
         </BeginStoryboard>
     </EventTrigger>
    

    【讨论】:

    • 这样,失去焦点后颜色保持在深灰色,不会变回白色
    • 我的代码只是IsFocused 触发器的一个示例。只需在IsFocused 为假时创建另一个Trigger,并将其设置为ForegroundWhite
    • 我已经尝试过了,但是通过这种方式,它禁用了我的另一个触发器,它在 IsMouseOver 时改变了我的前景
    • XamlParseException:键不能为空。\r\n参数名称:键
    猜你喜欢
    • 1970-01-01
    • 2011-08-10
    • 2010-12-26
    • 2017-04-05
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多