У меня есть поле со списком, в котором я хочу отображать объекты и возвращать значения перечислений. При первом открытии поле со списком отображает элементы как предполагаемые, но после выбора значения оно, кажется, исчезает из списка. Но если combobox активен, я могу использовать клавиатуру для перемещения вверх и вниз между другими значениями, поэтому они находятся в списке, но только невидимы.Значения ComboBox исчезают после выбора, когда объекты, используемые для отображения
Я создал небольшое тестовое приложение, чтобы показать свою проблему. При запуске приложения отображается выпадающий со всеми выборами (два первых являются тип объекта, третья строка):
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
Здесь показан весь используемый код, поэтому не существует никаких событий ... –