У меня есть Combobox, ItemTemplate которого привязан к DataTemplate, содержащему один из моих пользовательских элементов управления надписью.Все, что делает пользовательский элемент управления, это локализует назначенное ему содержимое.
В комбинированном окне (когда оно закрыто) будет отображаться текст первого выбранного элемента.Однако, когда выбранный элемент изменяется, отображение закрытого комбинированного списка не обновляется.Я знаю, что фактический выбранный элемент обновляется, потому что он привязан к свойству, которое изменяется правильно.Единственная проблема - это отображаемый текст.
Так, например, если я выберу элемент с текстом «Элемент 1», в закрытом поле со списком отобразится «Элемент 1».Затем, если я выберу «Item 2», закрытый Combobox все равно будет отображать «Item 1».
Вот как это настроено («Name» - это свойство элементов, связанных в ItemsSource):
<Grid.Resources>
<DataTemplate x:Key="MyTemplate">
<MyCustomLabel Content="{Binding Name}" />
<DataTemplate>
</Grid.Resources>
<Combobox ItemsSource="{Binding MyItems}" ItemTemplate="{StaticResource MyTemplate}" />
Ниже приведен код для моей метки управления:
public class MyLabel : Label
{
/// <summary>
/// When reassigning content in the OnContentChanged method, this will prevent an infinite loop.
/// </summary>
private bool _overrideOnContentChanged;
protected override void OnContentChanged(object oldContent, object newContent)
{
// if this method has been called recursively (since this method assigns content)
// break out to avoid an infinite loop
if (_overrideOnContentChanged)
{
_overrideOnContentChanged = false;
return;
}
base.OnContentChanged(oldContent, newContent);
var newContentString = newContent as string;
if (newContentString != null)
{
// convert the string using localization
newContentString = LocalizationConverter.Convert(newContentString);
// override the content changed method
// will prevent infinite looping when this method causes itself to be called again
_overrideOnContentChanged = true;
Content = newContentString;
}
}
}
Любой совет будет принята с благодарностью.Спасибо!