2013-07-16 2 views
0

Используя управление SemanticZoom в проекте MVVM, у меня есть два элемента управления ListView с настраиваемыми стилями и панелями и т. Д., Поэтому они отображаются горизонтально, для этого нет группировки или необходимости.SemanticZoom - Как сохранить два элемента управления ListView в синхронизации выбора?

Я привязываю оба к модели CollectionViewSource.

Когда я нажимаю элемент в увеличенном виде, он не фокусируется на этом элементе в увеличенном виде.

Как я могу это достичь?

Редактировать

Добавлен XAML код:

<SemanticZoom> 
     <SemanticZoom.ZoomedInView> 
      <ListView 
       Style="{StaticResource HorizontalListViewStyle}" 
       SelectionMode="None" 
       ScrollViewer.IsHorizontalScrollChainingEnabled="False" 
       ItemsSource="{Binding BoardItems}" 
       ItemContainerStyle="{StaticResource ZoomedOutListViewItemContainerStyle}"> 
      </ListView> 
     </SemanticZoom.ZoomedInView> 
     <SemanticZoom.ZoomedOutView> 
      <ListView x:Name="listView" 
       Style="{StaticResource HorizontalListViewStyle}" 
       SelectionMode="None" 
       ScrollViewer.IsHorizontalScrollChainingEnabled="False" 
       ItemsSource="{Binding BoardItems}" 
       ItemContainerStyle="{StaticResource ZoomedOutListViewItemContainerStyle}">      
      </ListView> 
     </SemanticZoom.ZoomedOutView> 
    </SemanticZoom> 
+1

Это два списка, один для увеличения и один для увеличения? Если да, то как вы устанавливаете источник объектов ZoomedOut? В коде позади? В любом случае попробуйте убедиться, что оба вида ZoomedInView и Out имеют 'ScrollViewer.IsHorizontalScrollChainingEnabled =" False "'. Известно, что ScrollChaining возится с ним. Кроме того, если ваш связанный источник данных изменяется, я обнаружил, что мне нужно повторно установить ItemSource моего ZoomedOutView, иначе, когда он проведет проверку ссылочного равенства, два элемента, возможно, будут отличаться. –

+0

+1 для подсказки ScrollViewer для других людей, я уже читал об этом. Говорю вам, мне хорошо платят, чтобы писать большие приложения XAML для жизни, и это никогда не становится проще. –

+0

Я собираюсь написать Терри Адамсу, который провел сессию на Build 2012 во всем этом, он должен просто работать. Я считаю, что если мы не будем громко жаловаться, то мы не можем ожидать, что ситуация улучшится, будь то ошибка, проблема с документацией, инструменты, ошибки, что бы я ни делал, потратив месяцы на обходные пути. –

ответ

0

В коде на странице (или используя вложенное свойство), обрабатывать ViewChangeStarted событие с этим кодом:

private void zoomyThingWoo_ViewChangeStarted(object sender, SemanticZoomViewChangedEventArgs e) 
    { 
     if (e.SourceItem.Item != null) 
     { 
      e.DestinationItem.Item = e.SourceItem.Item; 
     } 
    } 

Вот и все. В документации это звучит так: SemanticZoom будет работать только с любыми двумя элементами управления, которые реализуют ISemanticZoomInfo, но это не так.

Я поднял ошибку документации с командой XAML в Редмонде.

0

Оба ваших ZoomedInView и ZoomedOutView должны иметь ScrollViewer.IsHorizontalScrollChainingEnabled="False" для того, чтобы прокручивать правильно.

+0

Ум, согласно комментарию в ответ на ваш комментарий на 16-м, я уже установил это. –

+0

Я задаю это как ответ, чтобы люди, которые пришли посмотреть этот вопрос, смогли легко найти его (и знать, что на вопрос был дан ответ). Часто задаваемые вопросы требуют, чтобы это было сделано. –

+0

Прошу прощения, если я не понял, что Нейт. У меня уже была эта настройка, и проблема все еще там. –

Смежные вопросы