当Pivots ItemsSource设置为datacontext MVVM时,PivotItem标题样式

时间:2014-10-22 13:26:27

标签: c# wpf xaml mvvm binding

我应用MVVM模式,当我为数据创建ViewModel时,我按如下方式设置了pivot的ItemsSource:

<Pivot ItemsSource="{Binding DataContext}" x:Name="TripsSegmentsPivot" Title=" " Foreground="#FF888888" Style="{StaticResource PivotStyle1}" SelectionChanged="Pivot_SelectionChanged" Margin="0" Grid.Row="1"/>

但我希望我的枢轴项目具有像这样的样式标题

<PivotItem.Header>
    <TextBlock Margin="0, 16, 0, 0" Text="settings" Foreground="#FF888888" FontSize="32" FontFamily="Segoe WP" FontWeight="Light"/>
</PivotItem.Header>

在xaml中设置这个,或者在代码隐藏中,如果是最后一个,那么ViewModel中的确切位置是什么?

这就是我的Pivot xaml在MainPage.xaml中的样子:

<Pivot ItemsSource="{Binding DataContext}" x:Name="TripsSegmentsPivot" Title=" " Foreground="#FF888888" Style="{StaticResource PivotStyle1}" SelectionChanged="Pivot_SelectionChanged" Margin="0" Grid.Row="1">
        <Pivot.ItemTemplate>
            <DataTemplate>
                <PivotItem Margin="8,8,8,0">
                    <PivotItem.Header>
                        <TextBlock Margin="0, 16, 0, 0" Text="{Binding S}" Foreground="#FF888888" FontSize="32" FontFamily="Segoe WP" FontWeight="Light"/>
                    </PivotItem.Header>
                </PivotItem>
            </DataTemplate>
        </Pivot.ItemTemplate>
    </Pivot>

在MainPage.xaml.cs中我有

this.DataContext = new MyPageViewModel();

var viewModel = (MyPageViewModel)this.DataContext;

if (true == viewModel.LoadDataCommand.CanExecute(null))
{
   viewModel.LoadDataCommand.Execute(null);
}

但没有任何反应......

1 个答案:

答案 0 :(得分:0)

V.G。,

我回答了另一个问题,其中问题的根本原因是您的XAML在PivotItem内包含DataTemplate的方式。简单地说,不要这样做。 :) 这是来自您正在构建的同一个应用程序,因此它可能会解决您的问题。

看看我对PivotItems do not resize after binding的回答,并根据我的描述重构你的XAML。如果你仍然遇到标题绑定的问题,请给我发一条消息,我会回到这里帮你修复它。