C# 如何在WPF中的情节提要动画中将宽度值设置为百分比

C# 如何在WPF中的情节提要动画中将宽度值设置为百分比,c#,wpf,xaml,C#,Wpf,Xaml,我想用故事板做一个抽屉。 基本栅格中有2个子栅格。 一个是“MenuGrid”,另一个是“ContentGrid” 所以我写了一个这样的故事板(这是一个调整“MenuGrid”宽度的故事板): 每次我按某个按钮,它都工作得很好。 但是,当MenuGrid的宽度减小时,我希望ContentGrid的宽度也增大 在EasingDoubleKeyFrame KeyTime=“0”Value=“300”中,是否有方法将“值”表示为百分比或比率,而不是int值?只需设置第一列定义Width=“Aut

我想用故事板做一个抽屉。 基本栅格中有2个子栅格。 一个是“MenuGrid”,另一个是“ContentGrid”

所以我写了一个这样的故事板(这是一个调整“MenuGrid”宽度的故事板):


每次我按某个按钮,它都工作得很好。 但是,当MenuGrid的宽度减小时,我希望ContentGrid的宽度也增大


在EasingDoubleKeyFrame KeyTime=“0”Value=“300”中,是否有方法将“值”表示为百分比或比率,而不是int值?

只需设置第一列定义
Width=“Auto”
,因为您正在设置它将跟随的子列宽度的动画。
<Window.Resources>
    <Storyboard x:Key="MenuOpen">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Width" 
                                       Storyboard.TargetName="MenuGrid">
            <EasingDoubleKeyFrame KeyTime="0" Value="60"/>
            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="300"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="MenuClose" >
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Width" 
                                       Storyboard.TargetName="MenuGrid">
            <EasingDoubleKeyFrame KeyTime="0" Value="300"/>
            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="60"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</Window.Resources>

<Window.Triggers>
    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="ButtonOpenMenu">
        <BeginStoryboard Storyboard="{StaticResource MenuOpen}"/>
    </EventTrigger>
    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="ButtonCloseMenu">
        <BeginStoryboard Storyboard="{StaticResource MenuClose}"/>
    </EventTrigger>
</Window.Triggers>

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="300"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <Grid Width="300" x:Name="MenuGrid" Grid.Column="0">
        <StackPanel>
                <Button x:Name="ButtonCloseMenu" Width="60" Height="60" VerticalAlignment="Top" HorizontalAlignment="Right">
                </Button>
                <Button x:Name="ButtonOpenMenu" Width="60" Height="60" VerticalAlignment="Top" HorizontalAlignment="left" >
                </Button>
        </StackPanel>
    </Grid>
    <Grid x:Name="ContentGrid" Grid.Column="1">
    </Grid>
</Grid>