ItemTemplate이 사용자 정의 레이블 컨트롤 중 하나를 포함하는 DataTemplate에 바인딩 된 Combobox가 있습니다. 모든 사용자 지정 컨트롤은 할당 된 내용을 지역화합니다.Silverlight Combobox ItemTemplate Stuck 첫 번째 선택된 항목 표시
콤보 박스 (닫힌 상태)는 선택한 첫 번째 항목의 텍스트를 표시합니다. 그러나 선택한 항목이 변경되면 닫힌 콤보 박스의 표시가 업데이트되지 않습니다. 나는 그것이 실제로 바뀌는 속성에 묶여 있기 때문에 실제 선택된 항목이 업데이트된다는 것을 안다. 유일한 문제는 표시 텍스트입니다.
예를 들어 '항목 1'텍스트가있는 항목을 선택하면 닫힌 콤보 박스가 '항목 1'을 표시합니다. 그런 다음 '품목 2'를 선택하면 닫힌 콤보 상자에는 '품목 1'이 계속 표시됩니다.
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;
}
}
}
모든 : 아래
<Grid.Resources>
<DataTemplate x:Key="MyTemplate">
<MyCustomLabel Content="{Binding Name}" />
<DataTemplate>
</Grid.Resources>
<Combobox ItemsSource="{Binding MyItems}" ItemTemplate="{StaticResource MyTemplate}" />
내 레이블 컨트롤에 대한 코드입니다 : 여기
가이 설정 어떻게입니다 ('이름'항목의 속성 ItemsSource에 바인딩되고있다) 조언은 크게 감사하겠습니다. 감사!
콤보 상자에서 변경해야하는 레이블이 아닙니다. 콤보 상자는 ItemsSource의 각 항목에 대한 레이블을 생성합니다. – Maciek