Xaml 运行时数据透视项标题的更改

Xaml 运行时数据透视项标题的更改,xaml,windows-phone-8,Xaml,Windows Phone 8,我在使用WindowsPhone8Pivot控件时遇到了一个奇怪的问题 显然,当Pivot绑定到模型列表并且HeaderTemplate用于绑定到模型的一个属性时,在运行时更改该属性会导致标头中的布局问题 下面是示例代码。 创建一个简单的模型类 public class MyModel: INotifyPropertyChanged { private string _displayName; public event PropertyChangedEventHandler P

我在使用WindowsPhone8Pivot控件时遇到了一个奇怪的问题

显然,当Pivot绑定到模型列表并且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"));
            }
        }
    }
}
然后初始化模型列表(可能出现在ViewModel或页面代码中)

这会导致标题重叠。 有什么想法吗?

Elad


如果您第一次将displayName属性设置为“其他标题”,然后将该值更改为“model 2”,则正常显示。因此,在我看来,这个问题是由pivot header width属性(在代码中,是textblock的width)引起的。加载轴时,每个标题都有固定的宽度,此时,您将标题显示名称更改为longger值,轴将无法正确显示。

奇怪的问题,您能在最小的样本中重现它吗?当然可以。我应该把它贴在哪里?是的,我意识到这是一个固定宽度的问题。我想知道是否有人知道如何优雅地使标题刷新其布局。
Items = new List<MyModel>
{
    new MyModel { DisplayName = "model 1" },
    new MyModel { DisplayName = "model 2" },
}
<phone:Pivot ItemsSource="{Binding Items}" DisplayMemberPath="DisplayName">
    <phone:Pivot.HeaderTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding DisplayName}" />
        </DataTemplate>
    </phone:Pivot.HeaderTemplate>
</phone:Pivot>
Items[0].DisplayName = "Some other header";