我想在运行时设置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
答案 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