2010-04-19 30 views
0

如果我在同一視圖中將主控和細節保持在一起,我可以使主控細節方案正常工作。不過,我希望能夠根據用戶安全性定製細節演示。因此,我使用與後端相同的視圖模型將細節部分移至單獨的視圖。現在當選擇新的主記錄時,細節不會正確更新。如果這兩個視圖使用相同的viewmodel,不應該這樣工作很好嗎?就像我說的,當代碼在同一個視圖中時,它就可以正常工作。WPF中的單獨視圖中的主控細節

詳細XAML:

<ListView x:Name="DoctorOfficesList" 
       Grid.Column="1" 
       Background="black" 
       HorizontalContentAlignment="Stretch" 
       IsSynchronizedWithCurrentItem="True" 
       ItemsSource="{Binding Path=SelectedDoctor.DoctorOfficesCollection}" 
       ItemTemplate="{StaticResource DoctorOfficesListTemplate}"> 
    </ListView> 

主XAML:

<ListBox x:Name="DoctorHeaderList" 
      Grid.Column="0" 
      MinWidth="200" 
      MaxWidth="300" 
      Margin="0,0,2,0" 
      Background="black" 
      ItemsSource="{Binding Path=DoctorsList}" 
      SelectedItem="{Binding Path=SelectedDoctor}" 
      IsSynchronizedWithCurrentItem="True" 
      ItemTemplate="{StaticResource DoctorsListTemplate}" 
      ScrollViewer.HorizontalScrollBarVisibility="Hidden"> 
    </ListBox> 

我曾嘗試多種方法來得到這個工作。當列表框處於相同視圖時,所有方案都可以工作。當分開移動時,他們停止。如果它很重要,我也使用PRISMv2。

我想我的具體問題是我如何得到這個工作?我真的需要一個事件嗎?我會認爲,因爲他們綁定到同一個虛擬機這將是一個快照。

+0

只是肯定的: 1)您是否正確指定了datacontext? 2)您是否嘗試過使用事件來調試? (檢查SelectedDoctor是否存在等) 3)輸出窗口中的任何綁定異常? – 2010-04-19 17:18:45

+0

是的,就像我說過的,如果我將detailsview代碼移動到headerview中,它工作正常。它只有當我試圖將它們分開時。是的,選定的醫生存在......按照上述...... xaml中沒有任何變化,除了它在物理上的位置......沒有約束的例外 – ecathell 2010-04-19 18:04:55

回答

2

您確定兩個視圖都使用視圖模型的相同實例?我偶爾在視圖模型中實現了一個屬性,該屬性公開了GetHashCode()的結果,並在視圖中綁定了一個TextBlock,只是爲了仔細檢查應該綁定到相同實例的兩件事。

+0

虐待嘗試,視圖模型是由團結注入,我想我把它作爲conatinercontrolledlifetime,但我肯定會檢查,現在......謝謝。 – ecathell 2010-04-20 13:08:11

+0

我還沒有註冊默認的視圖模型與ioc容器...我現在已經做到了,它能正常工作......感謝您的幫助! – ecathell 2010-04-20 13:18:23

相關問題