设置网格宽度=" *"在Xaml中的Visual State Manager中

时间:2016-04-12 10:11:10

标签: wpf xaml win-universal-app

我正在尝试构建一个UWP应用程序,它使用Hub组件在宽模式下显示2个HubSections(默认),然后切换到在窄模式下只显示一个HubSection

我的HubSection定义如下:

    <Hub>
        <HubSection x:Name="Column1" Header="section 1" Background="Cornsilk">
        </HubSection>
        <HubSection x:Name="Column2" Header="section 2" Background="Chocolate">
        </HubSection>
    </Hub>

我的Visual State Manager定义如下:

        <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="AdaptiveStates">
            <VisualState x:Name="DefaultState">
                <VisualState.StateTriggers>
                    <AdaptiveTrigger MinWindowWidth="720" />
                </VisualState.StateTriggers>
                <VisualState.Setters>
                    <Setter Target="Column1.Width" Value="500" />
                    <Setter Target="Column2.Width" Value="700" />

                </VisualState.Setters>
            </VisualState>

            <VisualState x:Name="NarrowState">
                <VisualState.StateTriggers>
                    <AdaptiveTrigger MinWindowWidth="0" />
                </VisualState.StateTriggers>

                <VisualState.Setters>
                    <Setter Target="Column1.Width" Value="*" /> <--- This line doesn't work as * is not a number
                    <Setter Target="Column2.Width" Value="0" />

                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>

问题是如何将组件的宽度设置为*或&#34;使用所有可用空间&#34;在可视状态管理器中?

1 个答案:

答案 0 :(得分:1)

对HubControl不确定,但我对普通网格做了同样的事情(隐藏了一列)。

来源:https://github.com/AppCreativity/Kliva/blob/master/src/Kliva/Views/MainPage.xaml#L75

我需要为columndefinitions命名并使用可视状态管理器中的名称