Windows Phone 8 피벗 컨트롤로 작동하는 이상한 문제가 발생했습니다.런타임 중에 PivotItem 헤더가 변경됩니다.
피벗이 모델 목록에 바인딩되어 있고 모델의 속성 중 하나에 바인딩하는 데 HeaderTemplate이 사용되는 경우 런타임 중에 속성을 변경하면 헤더에 레이아웃 문제가 발생합니다.
다음은 샘플 코드입니다. 간단한 모델 클래스를 만듭니다.
public class MyModel: INotifyPropertyChanged
{
private string _displayName;
public event PropertyChangedEventHandler PropertyChanged;
public string DisplayName
{
get
{
return _displayName;
}
set
{
_displayName = value;
if(PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("DisplayName"));
}
}
}
}
그러면 이제 우리가 가지고있는 피벗 컨트롤
<phone:Pivot ItemsSource="{Binding Items}" DisplayMemberPath="DisplayName">
<phone:Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DisplayName}" />
</DataTemplate>
</phone:Pivot.HeaderTemplate>
</phone:Pivot>
에 모델 목록을 연결 모델 목록 (뷰 모델에서 발생, 또는 페이지의 코드 수)
Items = new List<MyModel>
{
new MyModel { DisplayName = "model 1" },
new MyModel { DisplayName = "model 2" },
}
를 초기화 2 피벗 항목 및 헤더가 올바르게 표시됩니다. 이제 우리는 (버튼 클릭 다음과 같은 말) 응용 프로그램 실행 중에 첫 번째 항목의 표시 이름 속성을 변경하고 더 긴 문자열 값을 할당합니다
Items[0].DisplayName = "Some other header";
이 헤더가 중복됩니다합니다. 의견이 있으십니까? Elad
당신이 DisplayName 속성을 설정하면
이상한 문제는 최소한의 샘플로 재현 할 수 있습니까? –
물론 가능합니다. 어디서 게시해야합니까? – eshaham