我有綁定到視圖模型一個WPF應用程序的簡單列表框,所以XAML的樣子:WPF MVVM ListBox中的SelectedItem不突出
<ListBox ItemsSource="{Binding Drivers}"
SelectedItem="{Binding SelectedDriver, Mode=TwoWay}" />
在我看來模型中,SelectedDriver設置,所以我希望當視圖顯示時,與SelectedDriver相關的列表框中的驅動程序應該高亮顯示,但不是。
當在視圖模型中設置SelectedItem值時,我需要做些什麼才能使SelectedItem突出顯示?
解決:根據下面的答案,我意識到雖然我的SelectedDriver對象實際上正在設置,但它不屬於Drivers集合。一旦我糾正了這一點,它按預期工作。感謝大家的意見。我沒有足夠的積分來回答答案,但非常感謝。
編輯:視圖模型確實實現INotifyPropertyChanged。視圖中的許多其他項目根據其綁定正確顯示。
編輯:視圖模型構造函數執行一些內務操作,它所做的一件事是將各種視圖元素設置爲之前的狀態。其中一個元素是驅動程序列表框,因此在視圖模型代碼中,它將被設置爲一個實際項目,就像您所描述的那樣: SelectedDriver = Drivers.Where(d => d.Id == savedId) 我有在Debug中驗證,此代碼正在查找正確的驅動程序,並且SelectedDriver的值是正確的,但它僅在UI中未突出顯示。
您的ViewModel是否實現了'INotifyPropertyChanged'? –
您的頁面生命週期中的哪一點是您的SelectedDriver被設置? – vidalsasoon