gpt4 book ai didi

c# - 在运行时更改数据透视表头

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:29 25 4
gpt4 key购买 nike

我想在运行时设置数据透视表头。以下解决方案适用于第一项。

 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);

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

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

谢谢,鲁文

最佳答案

如果您想(重新)定义您的Pivot header 的外观,那么您必须使用Pivot.HeaderTemplate DataTemplate 类型的属性(这将影响其所有 PivotItems 子项)。

这不能用 PivotItem.Header 来完成属性不是模板,而是一个对象,其中包含要绑定(bind)到每个 PivotItem 的 header DataTemplate 的数据。

所以理论上,你必须创建一个DataTemplate在您的代码(及其所有内容)中,然后将其分配给您的 Pivot.HeaderTemplate 属性。

一种解决方案可能是以下 article 中解释的解决方案:

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

  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);

2. 然后将 dt 分配给您的 Pivot.HeaderTemplate 属性:

yourPivot.HeaderTemplate = dt;

话虽这么说,并确保它确实是您所需要的:

如果您不想更改 Pivot header 的外观,而只想更改与 header DataTemplate 绑定(bind)的内容(包含的文本等...) ,那么您只需为 PivotItem.Header 属性分配另一个值。

例如,标题 DataTemplate 如下所示:

   <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>

还有像这样的 POCO :

    public class TestPOCO
{
public string Test1 { get; set; }
public string Test2 { get; set; }
}

您可以更改您的 PivotItem.Header 内容:

yourPivotItem.Header = new TextPOCO { Test1 = "newValue1", Test2 = "newValue2"};

关于c# - 在运行时更改数据透视表头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19684376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com