2012-06-19 6 views
0

나는 간단한 사전을 가지고 있습니다. 나는 콤보 박스에 i를 바인딩하고 선택한 값을 다른 속성에 바인딩하고 싶다.소스가 사전에있는 콤보 박스

private const string CellListPropertyName = "CellList"; 

    private Dictionary<string, string> _cellList; 
    public Dictionary<string, string> CellsList 
    { 
     get { return _cellList; } 
     set 
     { 
      _cellList = value; 
      RaisePropertyChanged(CellListPropertyName); 
     } 
    } 

여기 내 코드입니다 :

<ComboBox x:Name="comboBox" 
      ItemsSource="{Binding CellsList}" 
      DisplayMemberPath="Value" 
      SelectedValuePath="Key" 
      SelectedValue="{Binding Path=Conf:ConfProperties.Title}"> 

나는 다른 방법을 많이 시도했지만 내 콤보는 내가 62 개 요소가 포함되어 내 사전 점검 (등, 심지어 ItemTemplates으로) 항상 비어 있습니다.

또한 'SelectedValue'를 내 DataContext에 정의 된 속성에 바인딩하려고했지만 여전히 작동하지 않습니다.

여기에 바인딩 조금 이상한 보이는 내 상황에 맞는

<UserControl.DataContext> 
    <viewModel:ParametersViewModel></viewModel:ParametersViewModel> 
</UserControl.DataContext> 
+1

사전 데이터 바인딩을 지원하지 않습니다하십시오를 업데이트해야합니다. 여기를보십시오 : http://stackoverflow.com/questions/2636828/binding-to-a-dictionary-in-silverlight-with-inotifypropertychanged. 사전 대신 ObservableCollection과 비슷한 것을 사용할 수 있습니다. –

+0

방금 ​​실수 한 것을 보았습니다. 's'을 잊었습니다.>><내 콤보 상자가 가득 찼습니다. 바인딩이 작동하는지 확인하려고합니다. 그렇지 않으면 ObservableCollection을 사용해 보겠습니다. 감사합니다 – Pierpowl

+0

Dr.WPF 여기에'ObservableDictionary'에 대한 훌륭한 기사가 있습니다 : http://drwpf.com/blog/2007/09/16/can-i-bind-my-itemscontrol-to-a-dictionary/ –

답변

0

당신의 SelectedValue입니다. ParametersViewModel에 string 유형의 MySelectedTitle이라는 속성이 있다고 가정 해 보겠습니다. 다음이어야 바인딩 :

SelectedValue="{Binding Path=MySelectedTitle}" 

당신이 당신의 현재 데이터 컨텍스트의 속성에 아닌 selectedvalue을 "저장"하려는 경우, 당신은 당신의 질문