我有一個組合框,我想要顯示對象並返回枚舉值。當第一次打開時,組合框將按照設想顯示項目,但在選擇一個值後,它似乎從列表中消失。但是,如果組合框處於活動狀態,我可以使用鍵盤在其他值之間進行上下導航,因此它們位於列表中,但只能隱藏。當用於顯示對象時,組合框值將消失
我創建了一個小測試應用程序來顯示我的問題。當啓動應用程序顯示了所有的選擇組合框(前兩個是對象的類型,第三個是一個字符串):
All choices shown on startup http://i42.tinypic.com/ak7rll.png
選擇了藍線之後,當組合框再次此打開行缺少:
Blue line selected and is missing in popup http://i41.tinypic.com/24awgth.png
當選擇文本「綠色」的行線仍呈現:
Green line selected and still shown in popup http://i41.tinypic.com/2en3g2r.png
如果我選擇了紅線,唯一仍在列表中的是測試「綠色」。
我正在使用.NET Framework 3.5。
爲什麼元素消失的任何提示或提示?
以下是在Visual Studio中啓動空白項目後所需的所有代碼。
MainWindow.xaml.cs:
using System;
using System.Collections.Generic;
using System.Diagnostics;
namespace Test
{
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
}
private ColorComboBoxValue _activeColor;
public ColorComboBoxValue ActiveColor
{
get { return _activeColor; }
set
{
_activeColor = value;
Debug.WriteLine("ActiveColor: " + _activeColor.Color);
}
}
}
public class ColorList : List<ColorComboBoxValue> { }
public class ColorComboBoxValue
{
public Color Color { get; set; }
public Object Object { get; set; }
}
public enum Color
{
Red,
Blue,
Green
}
}
MainWindow.xaml:
<Window x:Class="Test.MainWindow" x:Name="window"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:Test"
Title="ComboBoxTest" Height="100" Width="200">
<Window.Resources>
<local:ColorList x:Key="ColorList">
<local:ColorComboBoxValue Color="Red">
<local:ColorComboBoxValue.Object>
<Path Data="M0,0 L0,30 60,30 60,0 Z" Fill="Red"/>
</local:ColorComboBoxValue.Object>
</local:ColorComboBoxValue>
<local:ColorComboBoxValue Color="Blue">
<local:ColorComboBoxValue.Object>
<Path Data="M0,0 L0,30 60,30 60,0 Z" Fill="Blue"/>
</local:ColorComboBoxValue.Object>
</local:ColorComboBoxValue>
<local:ColorComboBoxValue Color="Green">
<local:ColorComboBoxValue.Object>
<System:String>Green</System:String>
</local:ColorComboBoxValue.Object>
</local:ColorComboBoxValue>
</local:ColorList>
</Window.Resources>
<ComboBox ItemsSource="{Binding Source={StaticResource ColorList}}"
SelectedItem="{Binding ActiveColor, ElementName=window}">
<ComboBox.ItemTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding Path=Object}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Window>
是否有任何錯誤定義的on_select事件? – Arnej65 2010-05-14 16:51:46
所有使用的代碼顯示在這裏,所以沒有定義任何事件... – 2010-05-18 09:17:07