я заявляю, выпадающий как:Когда значение выбирается из выпадающего списка ничего не показывается
<ComboBox ItemsSource="{Binding RenderableSeriesList, Mode=OneWay}" DisplayMemberPath="Tag" SelectedItem="{Binding SelectedRenderableSeries}" />
TheRenderableSeriesList является ObservableCollection из BaseRenderableSeries. BaseRenderableSeries - это абстрактный класс, который содержит свойство Tag, а свойство Tag - объект. Объект TheRenderableSeriesList заполняется классами, которые все наследуются от BaseRenderableSeries.
Все работает правильно, за исключением того, что не отображается выбранный элемент. Когда что-то выбрано, свойство SelectedRenderableSeries указывает на правильный. Кроме того, список корректен, когда выпадающее поле падает.
Я немного озадачен, почему это ...
EDIT: После дальнейшего исследования это может быть ошибка в самом WPF.
Если вы попытаетесь привязать свойство Tag к нему, когда оно исходит из ContentControl, оно не похоже на правильное связывание.
Вот код, который демонстрирует:
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string propertyName)
{
if(this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public void AddItems()
{
TestObjects = new ObservableCollection<BaseTestObject>();
TestObjects.Add(new TestObject("one"));
TestObjects.Add(new TestObject("two"));
TestObjects.Add(new TestObject2("22two22"));
TestObjects.Add(new TestObject2("t22hree222"));
TestObjects.Add(new TestObject("three"));
TestObjects.Add(new TestObject("four"));
}
private ObservableCollection<BaseTestObject> _testObjects = new ObservableCollection<BaseTestObject>();
public ObservableCollection<BaseTestObject> TestObjects
{
get { return _testObjects; }
set
{
_testObjects = value;
this.NotifyPropertyChanged("TestObjects");
}
}
private BaseTestObject _testObject;
public BaseTestObject TestObject
{
get { return _testObject; }
set
{
_testObject = value;
this.NotifyPropertyChanged("TestObject");
}
}
}
// gets the Tag object property from FrameworkElement
// using FrameworkElement works....but ContentControl doesn't
public class BaseTestObject : ContentControl
{
//public object Tag { get; set; }
public string MyName { get; set; }
}
public class TestObject : BaseTestObject
{
string Name1 { get; set; }
public TestObject(string name)
{
Name1 = name;
Tag = name;
}
}
public class TestObject2 : BaseTestObject
{
string Name2 {get; set;}
public TestObject2(string name)
{
Name2 = name;
Tag = name;
}
}
<ComboBox Height="40" Width="250" ItemsSource="{Binding TestObjects, Mode=TwoWay}" DisplayMemberPath="Tag" SelectedItem="{Binding TestObject, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
Он сказал, что SelectedRenderableSeries не указывает на правильное значение. В вашем предложении ценность правильная, и целью было бы дать возможность узнавать пользовательский интерфейс об изменении. – Maximus
@Maximus Нет, он говорит, что * делает * указывает на правильный. Он просто не появляется. – furkle
Вы правы. Кажется, что это связано с привязкой к свойству тега ContentControl. – ashlar64