WP7更新Pivot控件标题

时间:2011-07-26 11:25:04

标签: data-binding pivot windows-phone

我有一个Pivot控件,我在XAML中使用如下。 我已将Pivot Title绑定到我的视图模型上的方法,因为它的内容会根据显示的内容而有所不同。

 <controls:Pivot x:Name="MainPivot" ItemsSource="{Binding PivotItemHeaders}" Title="{Binding ApplicationTitle}"  >
        <controls:Pivot.HeaderTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Description}"/>
            </DataTemplate>
        </controls:Pivot.HeaderTemplate>
        <controls:Pivot.ItemTemplate>
            <DataTemplate>
                <ListBox x:Name="EventsListbox"
                         ItemsSource="{Binding allEventItems}"
                         ItemTemplate="{StaticResource EventDisplay3}"
                         SelectionChanged="EventsListbox_SelectionChanged"/>
            </DataTemplate>
        </controls:Pivot.ItemTemplate>
    </controls:Pivot>

正在刷新项目集合,并且绑定对这些对象正常工作 - 但是Pivot标题不会使用新值刷新。 当首次显示页面/枢轴控件时,它似乎停留在该值上。

我有什么想法可以让枢轴控制刷新? - 谢谢

1 个答案:

答案 0 :(得分:0)

我刚做了一个快速测试,绑定工作正常:

<controls:Pivot Title="MY APPLICATION" ItemsSource="{Binding Items}">
    <controls:Pivot.HeaderTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding LineOne}" />
        </DataTemplate>
    </controls:Pivot.HeaderTemplate>
    <controls:Pivot.ItemTemplate>
        <DataTemplate>
            <Grid>      
                <Button Content="Update" Click="Button_Click" />
            </Grid>
        </DataTemplate>
    </controls:Pivot.ItemTemplate>
</controls:Pivot>

在C#中

private void Button_Click(object sender, RoutedEventArgs e)
{
    App.ViewModel.Items.Clear();
    App.ViewModel.Items.Add(new ItemViewModel() { LineOne = "foo" });
    App.ViewModel.Items.Add(new ItemViewModel() { LineOne = "bar" });
    App.ViewModel.Items.Add(new ItemViewModel() { LineOne = "baz" });
}

很明显,你做错了。发布您的代码,我们将看一看。

<强>更新

标题绑定也有效

XAML

<controls:Pivot Title="{Binding Title}">
    <controls:PivotItem Header="first">
        <Grid>
            <Button Click="Button_Click" Content="OK!" />
        </Grid>
    </controls:PivotItem>
</controls:Pivot>

C#:

private void Button_Click(object sender, RoutedEventArgs e)
{
    Title = "foobar!";
    PropertyChanged(this, new PropertyChangedEventArgs("Title"));
}