2012-09-04 21 views
3

我有,我有一個Telerik的RadGridView作爲父/主控屏幕。然後我有一個childcontrol控件顯示所選項目的詳細信息。無法獲得Telerik的radgridview突出結合與selectedItem設置視圖模型時的SelectedItem已經設置

我的網格設置這樣的:

<telerik:RadGridView 
AutoGenerateColumns="False" 
CanUserFreezeColumns="False" IsReadOnly="True" 
RowIndicatorVisibility="Collapsed" 
ItemsSource="{Binding LinkedCases}" 
SelectionUnit="FullRow" SelectionMode="Single" 
IsBusy="{Binding LinkedCasesLoading}" 
ShowColumnFooters="True" 
SelectedItem="{Binding CurrentlySelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" > 

CurrentlySelectedItem是在視圖模型的屬性。 它工作正常並正確填充細節控件。當我導航離開,然後回到這個屏幕

我的問題就來了。

屏幕被從頭重新創建,但我的視圖模型從視圖模型定位器(使用MVVM光與SimpleIOC)檢索。 Viewmodel完全符合我的要求。父網格正確填充,子詳細信息正確填充。 ViewModel上的CurrentlySelectedItem已填充,但網格不突出顯示所選行。

我嘗試過使用和不使用Updatesourcetrigger和IsSynchronisedWithCurrentItem,但這些會導致它選擇網格中的第一行並突出顯示 - 因此會覆蓋我之前在CurrentlySelectedItem中的值,這不是我所追求的。

任何人有關於如何實現這一目標的任何想法?

+0

有你驗證的SelectedItem結合工作或者沒有當您再次導航回你的屏幕,只是把DebugConverter中結合並檢查是否是所謂的,我問,是因爲我有'RadListBox'其中相對面臨類似的問題,當您單擊RadListBox項目時,SelectedItem綁定停止工作。 –

+0

是的 - 一切似乎都正常工作 - 除非最初填充時沒有突出顯示。一旦我點擊一行,它就會突出顯示它並填充細節控制。問題在於,因爲選定的項目已設置,詳細信息已填充 - 但不清楚它們所屬的父網格中的哪一行。 – SteveL

+1

嘗試在頁面加載(或導航到頁面)時調用Telerik gridview上的UpdateLayout()。我猜想你的Telerik網格被正確綁定到選定的項目,但它只需要更新其佈局。 – tsiorn

回答

3

無法加載的頁面上獲取到網參考或導航到 - 我把它命名爲CaseGridView,雖然它承認它是一個RadGridView,它返回null。我只是假定它沒有創建控件,因爲我已經命名了控件,並試圖用它來引用控件事件中的控件,這也是失敗的。

研究發現,它的工作對DataLoaded事件,如果我用發件人:

private void CaseGridView_DataLoaded(object sender, EventArgs e) 
    { 
     var grid = sender as RadGridView; 
     if (grid != null) 
     { 
      grid.SelectedItem = vm.CurrentlySelectedItem; 
      if (grid.SelectedItem != null) 
      { 
       grid.ScrollIntoView(grid.SelectedItem); 
      } 
     } 
    } 

我還添加了scrollIntoView一部分,所以,這將確保它在屏幕上是可見的。

+0

我曾遇到過這個問題,並且懷疑我的網頁中發生的事件「太快」了。我將SelectedItem設置爲一個有效的對象,但是當我在調試器中的下一行代碼上檢查它時,SelectedItem仍爲null。我將我的代碼重構爲dataloaded事件並解決了問題。謝謝!!! – Krafty

相關問題