WPF ListItem Увеличить событие - PullRequest
1 голос
/ 29 июня 2010

Допустим, у меня есть Listbox или, как я сейчас делаю, панель Wrap с привязанными к ней элементами.Элементы используют пользовательский шаблон данных, используя пользовательский элемент управления, если это имеет значение.

Теперь я хочу реагировать на щелчок (или любое событие в целом) и масштабировать элемент по отношению к пользователю, перекрывая окружающие элементы.В основном более подробный вид конкретного элемента, который выбирает пользователь.элемент будет приближаться к пользователю, открывая больше контента и возможностей для взаимодействия с ним.

Примерно так же, как здесь: http://ie.microsoft.com/testdrive/Performance/AmazonShelf/Default.html

Проблема заключается в том, что все остальные элементы будут создаватькомната для выбранного по мере его роста.Я не хочу этого.

Я просто не могу понять, как заставить его перекрывать окружающие предметы.Какой контейнер предметов я должен использовать (имейте в виду, что я хочу / нуждаюсь в обертке)

Любые советы будут оценены.Использование WPF 4, если есть что-то новое?

Спасибо.

ОБНОВЛЕНИЕ: Я пытаюсь согласиться с предложением Джоша здесь.Джош, это звучит именно так, как мне нужно.Однако, что бы я ни делал, я не могу заставить RenderTransform произойти.Я тяну свои волосы сюда.

Почему это не работает?Затухание в анимации работает отлично.Две прокомментированные анимации на событии клика также работают нормально.Но преобразование рендеринга ничего не делает.

Я пытался: "(Grid.RenderTransform). (RotateTransform.Angle)" "RenderTransform. (RotateTransform.Angle)" "(RenderTransform). (RotateTransform.Angle) "" (FrameworkElement). (RotateTransform.Angle) "" (Item). (RotateTransform.Angle) "

Как вы, ребята, отлаживаете подобные вещи?Там нет Intellisense, и это действительно для меня более или менее игра в догадки.

 <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <Grid>
                                    <my:custom x:Name="Item" Margin="10,10 10,10" />
                                </Grid>

                                <DataTemplate.Triggers>
                                    <EventTrigger RoutedEvent="FrameworkElement.Loaded" SourceName="Item">
                                        <BeginStoryboard>
                                            <Storyboard>
                                                <DoubleAnimation Storyboard.TargetName="Item" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0" Duration="0:0:2"/>
                                            </Storyboard>
                                        </BeginStoryboard>
                                    </EventTrigger>
                                    <EventTrigger RoutedEvent="FrameworkElement.MouseUp" SourceName="Item">
                                        <BeginStoryboard>
                                            <Storyboard>
                                                <!--<DoubleAnimation Storyboard.TargetName="Item" Storyboard.TargetProperty="Width" To="200" Duration="0:0:2" />-->
                                                <!--<DoubleAnimation Storyboard.TargetName="Item" Storyboard.TargetProperty="Height" To="400" Duration="0:0:2" />-->
                                                        <DoubleAnimation Storyboard.TargetName="Item" Storyboard.TargetProperty="(Grid.RenderTransform).(RotateTransform.Angle)" From="0" To="180" Duration="0:0:2" />
                                            </Storyboard>
                                        </BeginStoryboard>
                                    </EventTrigger>
                                </DataTemplate.Triggers>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>

Ответы [ 2 ]

0 голосов
/ 29 июня 2010

Ааа, я начал писать пост в блоге о подобной технике, которую я использовал для настройки ListBox ( см. Эту страницу для примера стандартного Silverlight ListBox, который имитирует представление деталей iPhone.) К сожалению, я никогдазакончил пост.

В любом случае, вам нужно применить преобразование рендера к элементу, который вы можете анимировать.Затем, в конце анимации, вы можете перевернуть другой элемент на передний план, содержащий ваше представление сведений.Преобразование рендеринга, в отличие от преобразования макета, не повлияет на макет других элементов.

0 голосов
/ 29 июня 2010

Wrappanel сделает комнаты в соответствии с размером. Вы должны использовать Canvas для такого поведения Zoom. Поскольку вы также хотите Wrappanel, вы можете добавить холст поверх Wrappanel. Когда вы нажимаете на элемент, просто добавьте этот элемент в дочерние элементы Canvas и установите правильный размер, Canvas.Top & Canvas.Left, удалите то же самое для некоторых событий.

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