Установить определение столбца сетки с помощью 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>