Silverlight: используйте TransitioningContentControl для анимации сетки из режима «только чтение» в режим редактирования - PullRequest
1 голос
/ 18 июня 2010

Я использую Silverlight 4.0, и у меня есть простая сетка, в которой отображаются некоторые связанные с пользователем детали, такие как имя, номер телефона.адрес и т. д. Первоначально текстовые поля находятся в режиме только для чтения.Текстовые поля становятся доступными для редактирования, когда пользователь нажимает ссылку «Обновить информацию» (в той же сетке).Сейчас я пробую простой эффект перехода из «только для чтения» в «редактируемый» режим.

вот код xaml

 <layoutToolkit:TransitioningContentControl x:Name="tcc"
                                               Grid.Row="1"
                                               BorderThickness="1">
        <layoutToolkit:TransitioningContentControl.Content>
            <Grid x:Name="grd1" Background="White">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />

                </Grid.ColumnDefinitions>

                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>

                <TextBlock Text="Name" Grid.Row="0"  Grid.Column="0"/>

                <TextBox x:Name="txtName" Grid.Column="1" Grid.Row="0" IsReadOnly="True"></TextBox>

                <TextBlock Text="Email" Grid.Row="1"  Grid.Column="0"/>

                <TextBox x:Name="txtEmail" Grid.Column="1" Grid.Row="1" IsReadOnly="True"></TextBox>
                <Button x:Name="ChangeContent" Content="Updatee Info" Click="ChangeContent_Click" Grid.Column="1" Grid.Row="2"></Button>
            </Grid>
        </layoutToolkit:TransitioningContentControl.Content>
    </layoutToolkit:TransitioningContentControl>

и в событии нажатия кнопки

private void ChangeContent_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        //tcc.Content = DateTime.Now.ToString();
       txtName.IsReadOnly = false;
       txtEmail.IsReadOnly = false;           
    }

Как мне добиться эффекта перехода в этом сценарии?

1 Ответ

3 голосов
/ 19 июня 2010

Я не очень знаком с TransitioningContentControl, но я думаю, что для того, чтобы этот элемент управления работал, вам нужно переключить сам Content, а не просто свойство Control внутри него.Чтобы добиться необходимого перехода, вы можете создать пользовательский (или изменить существующий) ControlTemplate для текстового поля с пользовательским VisualState с именем «ReadOnly» и Storyboard для необходимого эффекта.Или вы можете создать два различных элемента управления Grid, один с интерфейсом ReadOnly и один с интерфейсом Editable, и в своем коде просто переключаться между ними.

Следующая ссылка содержит рабочий пример того, какиспользуйте TransitioningContentControl: http://firstfloorsoftware.com/blog/animated-page-navigation-in-sl3/

...