2013-07-16 27 views
0

在MVVM項目中使用SemanticZoom控件,我有兩個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

它是兩個ListViews,一個用於縮小和一個放大?如果是這樣,你如何設置ZoomedOut項目源?在代碼背後?無論哪種情況,請確保您的ZoomedInView和Out視圖都具有'ScrollViewer.IsHorizo​​ntalScrollChainingEnabled =「False」'。 ScrollChaining已經被人們熟知。另外,如果綁定的數據源發生變化,我發現我需要重新設置ZoomedOutView的ItemsSource,否則當它執行引用相等性檢查時,這兩個項目可能會出現不同。 –

+0

+1爲ScrollViewer技巧爲其他人的利益,我已閱讀有關。我告訴你,爲了生活而寫好大型XAML應用程序,我可以很好地獲得報酬,而且它永遠不會變得更輕鬆。 –

+0

我要寫給Terry Adams,他在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的控件,但它不會。

我在Redmond的XAML團隊提出了一個文檔錯誤。

0

無論您ZoomedInViewZoomedOutView需要有ScrollViewer.IsHorizontalScrollChainingEnabled="False"以正常滾動。

+0

恩,按照16日回覆你評論的評論,我已經設定好了。 –

+0

我將它設置爲答案,以便來看這個問題的人能夠很容易地找到答案(並且知道問題已被回答)。常見問題解答請求完成此操作。 –

+0

如果我不清楚Nate,我很抱歉。我已經有了這個設置,問題仍然存在。 –