2012-01-18 15 views
1

我需要在后面的代码中选择WPF Combobox下的自定义项目。例如: “西班牙”如何通过基于自定义类的代码来设置WPF Combobox SelectedValue?

UILanguages languages = new UILanguages();     
       languages.Add(
         new UILanguage 
         { 
          Culture = "en", 
          SpecCulture = "en-US", 
          EnglishName = "English" 
         }); 

       languages.Add(
        new UILanguage 
        { 
         Culture = "es", 
         SpecCulture = "es-ES", 
         EnglishName = "Spanish" 
        }); 

       CollectionViewSource cvs = new CollectionViewSource 
       { 
        Source = languages 
       }; 

       cmbLanguages.SetBinding(ItemsControl.ItemsSourceProperty, new Binding { Source = cvs }); 

标记

<ComboBox Grid.Column="1" Height="23" HorizontalAlignment="Left" Margin="0,1,0,0" 
       Name="cmbLanguages" VerticalAlignment="Top" Width="207" 
      ItemsSource="{Binding Source={StaticResource UILanguagesViewSource}}" 
       /> 

请注意,

但这 Set SelectedItem of WPF ComboBoxWPF combobox binding from code behind 没有帮助的。

任何线索?

谢谢!

回答

1

您需要将SelectedValue属性设置为您的语言的特定实例。这可以通过像这样做:

// Get first element with proper name from the bound source 
cmdLanguages.SelectedValue = languages.FirstOrDefault(l => l.EnglishName == "Spanish"); 
+0

谢谢师父。你的解决方案是优雅的!(+ 1)! – 2012-01-18 19:40:16

1

或者除了里德的asnwer你可以(),第一绑定到财产

<ComboBox ... SelectedItem="{Binding Path=Selected}" /> 

在你UILanguage有一个布尔属性Selected

,并从后面的代码做的,这样的事情

UILanguage lang = languages.FirstOrDefault(l => l.EnglishName == "MyLanguage"); 
lang.Selected = true; 

//更新绑定

绝对是更多的代码,但在这种情况下,纯粹的WPF编码。

相关问题