WP7 Обновление заголовка элемента управления Pivot - PullRequest
2 голосов
/ 26 июля 2011

У меня есть элемент управления Pivot, который я использую в XAML следующим образом.Я связал заголовок сводки с методом в моей модели представления, поскольку его содержимое будет зависеть от того, что отображается.

 <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 не обновляется с новым значением.Кажется, это застряло в значении, когда элемент управления page / pivot был впервые показан.

Есть какие-нибудь идеи, как мне получить элемент управления pivot для обновления?- Спасибо

1 Ответ

0 голосов
/ 26 июля 2011

Я только что сделал быстрый тест, привязка работает просто отлично:

<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"));
}
...