Как мне перевести значение Grid.Row для TextBlock, основываясь на изменении размера окна в WPF? - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь получить опыт использования VisualStateManager, с которым у меня мало опыта, в. NET Core WPF-приложении. У меня есть сетка на окне с 3 TextBlocks в нем. Когда я сужаю окно до 380 пикселей или меньше, я хочу переместить один из TextBlocks из Grid.Row 0 в Grid.Row 1. Я посмотрел, как я могу это сделать, но пример кода, с которым я столкнулся, использовал VisualState.StateTriggers. Однако, когда я попытался использовать это в коде, с которым я работаю, Intellisense не распознал VisualState.StateTriggers, поэтому я не уверен, что делать дальше. И когда я изменяю размер окна до более чем 380 пикселей, я хочу вернуть значение TextBlock's GridRow обратно в 0. Я начал использовать DoubleAnimation, но, опять же, я не знаю, как вызвать изменение состояния. Я работаю с. NET Core 3.1, это приложение WPF. Вот что у меня так далеко:

<Grid HorizontalAlignment="Stretch" VerticalAlignment="Center">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <TextBlock HorizontalAlignment="Left">Some text in the upper left</TextBlock>
    <TextBlock
        x:Name="UpperRightTextBlock"
        HorizontalAlignment="Right"
        Text="Some text in the upper right">
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="WideView">
                <VisualState x:Name="GoToWideView">
                    <!--<Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetName="GridRow"
                            Storyboard.TargetProperty="Grid.Row"
                            To="0"
                            Duration="0" />
                    </Storyboard>-->
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
    </TextBlock>
    <TextBlock
        x:Name="BottomTextBlock"
        Grid.Row="2"
        HorizontalAlignment="Center">
        This text is in the bottom row
    </TextBlock>
</Grid>
...