2011-04-28 64 views
0

我想通過字符串值選擇組合框項目,但我有一個問題。 一個簡單的測試:爲什麼SelectedItem屬性不適用於ComboBoxItem字符串?

<ComboBox SelectedItem="text1" ItemsSource="{Binding MyListOfStrings}"> 
</ComboBox> 

MyListOfStrings與字符串 「文本1」, 「文本2」, 「text3」 中的列表。這種方式工作正常 - text1被選中。

但通過以下方式不起作用:

<ComboBox SelectedItem="text1"> 
<ComboBoxItem>text1</ComboBoxItem> 
<ComboBoxItem>text2</ComboBoxItem> 
<ComboBoxItem>text3</ComboBoxItem> 
</ComboBox> 

有什麼不對呢?爲什麼如果我在XAML中定義項目,WPF找不到text1?

P.S.其實SelectedItem使用數據綁定,我只是簡化了這個例子。

回答

1

你可以Selector.IsSelected="True"設定所選擇的項目爲ComboItem

<ComboBox> 
<ComboBoxItem Selector.IsSelected="True">text1</ComboBoxItem> 
<ComboBoxItem>text2</ComboBoxItem> 
<ComboBoxItem>text3</ComboBoxItem> 
</ComboBox> 

編輯:

如果您使用綁定,創造一個ComboBoxItem財產

public ComboBoxItem MyProperty 
    { 
     get 
     { 
      ComboBoxItem ci = new ComboBoxItem(); 
      ci.Content = "text1"; 
      return ci; 
     } 
    } 

和綁定

SelectedItem="{Binding Path=MyProperty}" 
+0

這會很棒,但SelectedItem實際上使用數據綁定,所以我不知道在設計時選擇了哪個項目。 – JustAMartin 2011-04-28 09:13:36

+0

那麼你應該將ComboBoxItem綁定到SelectedItem – Binil 2011-04-28 09:34:18

1

我想這不起作用,因爲ComboBoxItem不是一個字符串,並且沒有從字符串到ComboBoxItem的轉換器。 但ComboBoxItem提供您可以使用的「IsSelected」屬性。

+0

hmm ...實際上,SelectedItem正在使用綁定,因此很難綁定每個組合框項目的IsSelected屬性。但也許我可以使用一些自定義轉換器?有沒有什麼辦法可以創建將SelectedItem字符串轉換爲ComboBoxItem並返回的轉換器? – JustAMartin 2011-04-28 09:11:22

相關問題