Добавить анимацию, когда пользовательский элемент управления становится видимым и свернутым в Wpf - PullRequest
0 голосов
/ 28 мая 2010

У меня есть два xaml-файла MainWindow.xaml и другой пользовательский элемент управления WorkDetail.xaml. Файл MainWindow.xaml содержит текстовое поле, кнопку, список и ссылку на WorkDetail.xaml (свернутый пользовательский элемент управления). Всякий раз, когда пользователь вводит какой-либо текст, он добавляется в список при нажатии кнопки добавления. При двойном щелчке по любому элементу из списка видимость WorkDetail.xaml устанавливается на Visible, и он отображается. В WorkDetail.xaml (пользовательский элемент управления) есть текстовый блок и кнопка. Текстовый блок отображает текст выбранного элемента, а кнопка закрытия устанавливает видимость окна WorkDetail как свернутого. Теперь я пытаюсь оживить WorkDetail.xaml, когда он становится видимым и рушится. Когда по любому элементу из списка дважды щелкают, а видимость WorkDetail.xaml устанавливается видимой, я хочу создать анимацию перемещения окна WorkDetail.xaml справа налево в MainWindow. Когда нажата кнопка «Закрыть» из файла WorkDetail.xaml, а файл WorkDetail.xaml свернут, я хочу сдвинуть файл WorkDetail.xaml слева направо из MainWindow.

Вот скриншот: альтернативный текст http://i48.tinypic.com/13znac5.jpg

Код MainWindow.xaml:

   <Window...>
    <Grid Background="Black" >      
            <TextBox x:Name="enteredWork" Height="39" Margin="44,48,49,0" TextWrapping="Wrap" VerticalAlignment="Top"/>
            <ListBox x:Name="workListBox" Margin="26,155,38,45" FontSize="29.333" MouseDoubleClick="workListBox_MouseDoubleClick"/>
            <Button x:Name="addWork" Content="Add" Height="34" Margin="71,103,120,0" VerticalAlignment="Top" Click="Button_Click"/>

            <TestWpf:WorkDetail x:Name="WorkDetail" Visibility="Collapsed"/>
        </Grid>
</Window>

Код класса MainWindow.xaml.cs:

namespace TestWpf
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            this.InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            workListBox.Items.Add(enteredWork.Text);
        }

        private void workListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            WorkDetail.workTextBlk.Text = (string)workListBox.SelectedItem;
            WorkDetail.Visibility = Visibility.Visible;
        }
    }
}

Код WorkDetail.xaml:

<UserControl ..>
  <Grid Background="#FFD2CFCF">
        <TextBlock x:Name="workTextBlk" Height="154" Margin="33,50,49,0" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="29.333" Background="#FFF13939"/>
        <Button x:Name="btnClose" Content="Close" Height="62" Margin="70,0,94,87" VerticalAlignment="Bottom" Click="btnClose_Click"/>       
    </Grid>
</UserControl>

Код класса WorkDetail.xaml.cs:

namespace TestWpf
{
    public partial class WorkDetail : UserControl
    {
        public WorkDetail()
        {
            this.InitializeComponent();
        }

        private void btnClose_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            Visibility = Visibility.Collapsed;
        }
    }
}

Может кто-нибудь сказать, как я могу это сделать?

1 Ответ

0 голосов
/ 31 мая 2010

это эта ссылка Вам интересно? Я думаю, что нечто очень похожее достигается с помощью техники VisualBrush. Стоит посмотреть!

JAPF http://www.remote -screenshots.com / thumbs / medium / 0 / www.japf.fr.jpg

Другой идеей было бы использование VisualStateManager и Transistions: вы можете перезаписать информацию о стиле ваших элементов управления и использовать анимацию раскадровки - без таких инструментов, как Blend , это может быть очень сложно.

Надеюсь, это все равно поможет.

С наилучшими пожеланиями,
томас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...