2010-04-19 55 views
0

我最近將我的Silverlight應用程序從3升級到4.經過幾個小時的抨擊我的頭靠在牆上,試圖解決問題,我已經將問題縮小到這個範圍:在Silverlight 4中添加ComboBoxItem到ComboBox問題

我有一個用戶控件,裏面有一個ComboBox。 ComboBox有一個ComboBoxItem子項。用戶控件暴露了一個get訪問器,它返回ComboBox的Items對象,允許我通過xaml添加額外的ComboBoxItems。

這一切都在Silverlight 3中工作得很好,但它不是在Silverlight 4

工作作爲代碼:

//XAML 
<UserControl ... > 
    <ComboBox Name="myComboBox"> 
    <ComboBoxItem Content="Select an Item" /> 
    </ComboBox> 
    <!-- All my other stuff --> 
</UserControl> 

//Code behind 
public ItemCollection ListItems 
{ 
    get 
    { 
    return myComboBox.Items; 
    } 
} 

//Implementation of User-Control 
<CustomControl:UserControl ... > 
    <CustomControl:UserControl.ListItems> 
    <ComboBoxItem Content="Item 1" /> 
    <ComboBoxItem Content="Item 2" /> 
    <ComboBoxItem Content="Item 3" /> 
    </CustomControl:UserControl.ListItems> 
</CustomControl:UserControl> 

正如我所說,這一切都在Silverlight 3中工作得很好,但不在Silverlight 4中工作。

解決方法似乎是刪除我的用戶控件中的單個ComboBoxItem,但我希望避免,因爲我希望它作爲默認項目。

任何幫助將不勝感激!

回答

1

爲Silverlight 4重寫了XAML解析器,使其與WPF更加一致。我非常確定你期望的行爲是SL3中的一個錯誤,我不認爲它會在WPF中以這種方式工作,儘管我從未真正嘗試過。

您可以通過enabling quirks mode返回舊模式,但我不會推薦它。相反,我要做的是爲組合框創建ControlTemplate,以便在沒有選中任何內容時顯示「選擇項目」文本。將它作爲組合框中的實際項目,實際上只是我們一直被迫使用諸如Windows Forms和HTML之類技術的黑客攻擊,但在Silverlight中,似乎將SelectedItem設爲null更合適。

+0

謝謝! – AlishahNovin 2010-04-19 22:56:09