2011-12-21 4 views
0

목록 상자에 내 ViewModels가 포함 된 사전에 바인딩되어 있고 목록 상자에 사전에 KeyValuePair의 키가 표시되어 있습니다.ListBox SelectedItem from KVP to ViewModelBase

<ListBox Style="{StaticResource MenuListBox}" x:Name="MenuItems" ItemsSource="{Binding Path=Screens}" ItemContainerStyle="{StaticResource MenuListBoxItem}" SelectedItem="{Binding Path=CurrentView}" /> 

현재보기는 ContentControl에 표시되는 현재보기입니다. 리스트 박스에서 선택이 변경 내가이 예외를 얻을 때

는 :

System.Windows.Data Error: 7 : ConvertBack cannot convert value '[Top 100, ModBox.ViewModel.Top100ViewModel]' (type 'KeyValuePair`2'). BindingExpression:Path=CurrentView; DataItem='MainViewModel' (HashCode=18169760); target element is 'ListBox' (Name='MenuItems'); target property is 'SelectedItem' (type 'Object') NotSupportedException:'System.NotSupportedException: TypeConverter cannot convert from System.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[GalaSoft.MvvmLight.ViewModelBase, GalaSoft.MvvmLight.WPF4, Version=0.0.0.0, Culture=neutral, PublicKeyToken=63eb5c012e0b3c1c]]. 

ViewModelBase에 KVP 변환하려고는 CurrentView에 KVP의 값을 설정하므로, 어떻게 그것을 만들 수 있습니다 ? 귀하의 경우 대신 당신이 SelectedValuePath 속성을 SelectedValue에 결합하여 사용해야하는 SelectedItem에서

답변

0

:

<ListBox Style="{StaticResource MenuListBox}" x:Name="MenuItems" 
    ItemsSource="{Binding Path=Screens}" 
    ItemContainerStyle="{StaticResource MenuListBoxItem}" 
    SelectedValue="{Binding Path=CurrentView}" 
    SelectedValuePath="Value" 
    /> 

당신이 KeyValuePair의 단지 Value 속성을 선택 전체 목록 상자 항목 싶지 않기 때문에.

+1

나는이 간단한 무엇인가 내 마음을 어지럽 혔다!? * -facepalm- *, 잘 오. 감사! – MrZunz