Установить определение столбца сетки с помощью visualstatemanager

Привет, я делаю расширяемую боковую панель в wpf, панель состоит из сетки, куда я помещаю несколько кнопок для навигации в приложении. Я хочу, чтобы панель была развернутой, в развернутом виде показана вся кнопка (иконка + текст), в уменьшенной форме отображается только иконка.

Я начинаю с создания состояний Expanded и Reduced, но в сокращенном состоянии всякий раз, когда я устанавливаю GridColumnDefinition.Width в какое-то значение. Выдает исключение и происходит сбой, ColumnDefinition.Width в базовом состоянии устанавливается с использованием звездной записи в сокращенном виде. Я хочу установить его с помощью пикселя (80 пикселей).

<Window x:Class="DashboardUI.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:prism="http://prismlibrary.com/"
        xmlns:local="clr-namespace:DashboardUI"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="SideNavigationMenuStates">
                <VisualState x:Name="Expanded"/>
                <VisualState x:Name="Reduced">
                    <Storyboard>
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NavigationPaneColumn"
                                                       Storyboard.TargetProperty="Width">
                            <DiscreteObjectKeyFrame KeyTime="0" Value="0.25*"/>
                        </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        <Grid.RowDefinitions>
            <RowDefinition MaxHeight="80"/>
            <RowDefinition Height="7*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition x:Name="NavigationPaneColumn"/>
            <ColumnDefinition Width="5*"/>
        </Grid.ColumnDefinitions>
        <Rectangle Fill="#FF3EA4F9" Panel.ZIndex="1" Grid.ColumnSpan="2">
            <Rectangle.Effect>
                <DropShadowEffect ShadowDepth="1" BlurRadius="2" Direction="0"/>
            </Rectangle.Effect>
        </Rectangle>
        <ContentControl Grid.Column="1" Grid.Row="1" Margin="10"/>
        <Grid x:Name="grid" Grid.Row="1" Background="#FF252339" RenderTransformOrigin="0.5,0.5">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="0.1*"/>
                <ColumnDefinition/>
                <ColumnDefinition Width="0.1*"/>
            </Grid.ColumnDefinitions>
            <StackPanel Grid.Column="1" Margin="0,10"/>
        </Grid>
        <StackPanel Grid.Column="1" Margin="10,0" Height="32" VerticalAlignment="Center" FlowDirection="RightToLeft"/>
        <ToggleButton Content="Expand" Margin="10" Panel.ZIndex="1"/>

    </Grid>
</Window>

0 ответов

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