我无法在XAML中找到解决此问题的方法:

当左键的 IsMouseOver 为true时,我想将右键的宽度设置为某个值。我不知道在哪里放这个:在其中一个按钮的样式或模板中或在网格上的样式中。它甚至可能吗?

<Border Style="{StaticResource ContentBodyStyle}" x:Name="Border" >
    <Grid Width="Auto" Height="Auto" Style="{DynamicResource GridStyle1}">
        <Grid.ColumnDefinitions>
        <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Button Margin="0,0,0,0" Content="Button" Grid.Row="0" x:Name="BtnLeft" Style="{DynamicResource ButtonStyle1}"/>
        <Button Margin="0,0,0,0" Content="Button" Grid.Column="1" x:Name="BtnRight" Width="0"/>
    </Grid>
</Border>

由于

有帮助吗?

解决方案

我不确定您是否可以为控件范围之外的控件设置属性,并为其指定样式。即使有可能,这样做似乎也不对。 您可以在场景中执行的操作是使用事件触发器和故事板,在两个按钮都可见的任何位置定义。这是一个如何修改BtnLeft的例子,虽然我更喜欢把故事板放在树上一点,以便在必要时重复使用:

<Button Margin="0,0,0,0" Content="Button" Grid.Row="0" x:Name="BtnLeft" Style="{DynamicResource ButtonStyle1}">
    <Button.Resources>
        <Storyboard x:Key="OnMouseEnter1">
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                Storyboard.TargetName="BtnRight"
                Storyboard.TargetProperty="Width">
                <SplineDoubleKeyFrame KeyTime="00:00:00.5" Value="75"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
        <Storyboard x:Key="OnMouseLeave1">
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
                Storyboard.TargetName="BtnRight" 
                Storyboard.TargetProperty="Width">
                <SplineDoubleKeyFrame KeyTime="00:00:00.5" Value="0"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    </Button.Resources>
    <Button.Triggers>
        <EventTrigger RoutedEvent="Mouse.MouseEnter" SourceName="BtnLeft">
            <BeginStoryboard Storyboard="{StaticResource OnMouseEnter1}"/>
        </EventTrigger>
        <EventTrigger RoutedEvent="Mouse.MouseLeave" SourceName="BtnLeft">
            <BeginStoryboard Storyboard="{StaticResource OnMouseLeave1}"/>
        </EventTrigger>
    </Button.Triggers>
</Button>

您可以使用MouseEnter和MouseLeave事件代替IsMouseOver属性。这应该会给你相同的功能。

编辑:在 EventTrigger 中,当在该按钮范围内定义该触发器时,可以省略 SourceName 属性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top