在运行时更改pivot头

时间:2013-10-30 14:01:28

标签: c# windows-phone-7 windows-phone-8 windows-phone pivot

我想在运行时设置pivot头。 以下解决方案适用于第一项。

 StackPanel sp = new StackPanel();
 TextBlock tb1 = new TextBlock();
 tb1.Text = "bla";
 TextBlock tb2 = new TextBlock();
 tb2.Text = "blub";

 sp.Children.Add(tb1);
 sp.Children.Add(tb2);

 PivotItem pivotitem = new PivotItem { Header = sp };

 WorkoutPivot.Items.Add(pivotitem);

在两个或多个项目中,它会抛出异常:“值不在预期范围内。”

我需要另一种方法来做到这一点。

谢谢, Rouven

1 个答案:

答案 0 :(得分:0)

如果您想(重新)定义Pivot标题的外观,那么您必须使用Pivot.HeaderTemplate类型的DataTemplate属性(这会影响其PivotItem.Header DataTemplate 1}}孩子们。

使用article属性不是模板,而是包含要绑定到每个PivotItems标题DataTemplate的数据的对象。

理论上,您必须在代码中创建{{3}}(及其所有内容),然后将其分配给PivotItem属性。

可以使用以下{{3}}中解释的一个解决方案:

1。像这样创建您的DataTemplate(或从资源中检索它):

Pivot.HeaderTemplate

2。然后将 string xaml = @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""> <StackPanel> <TextBlock Text='bla' /> <TextBlock Text='blub' /> </StackPanel> </DataTemplate>"; DataTemplate dt = (DataTemplate)XamlReader.Load(xaml); 分配给您的dt媒体资源:

Pivot.HeaderTemplate

这样说并确保它真正符合您的需求

如果你不想改变你的yourPivot.HeaderTemplate = dt; 标题看起来的方式,只想改变绑定到标题Pivot(包含文字等等)的方式,那么你只需要为您的DataTemplate财产分配另一个值。

例如,标题为PivotItem.Header,如下所示:

DataTemplate

和那样的POCO:

   <DataTemplate
        xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
        xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">
        <StackPanel>
            <TextBlock Text='{Binding Test1}' />
            <TextBlock Text='{Binding Test2}' />
        </StackPanel>        
   </DataTemplate>

您可以使用

更改 public class TestPOCO { public string Test1 { get; set; } public string Test2 { get; set; } } 内容
PivotItem.Header