2

実行時にピボット ヘッダーを設定したい。次の解決策は、最初の項目に対して機能します。

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

2 つ以上の項目で、「値が期待される範囲内にありません」という例外がスローされます。

これを行うには別の方法が必要です。

ありがとう、ルーヴェン

4

1 に答える 1

0

Pivotヘッダーの外観を (再) 定義する場合は、 DataTemplate型のPivot.HeaderTemplateプロパティを使用する必要があります(すべての子に影響します)。PivotItems

テンプレートではなく、各のヘッダーにバインドされるデータを含むオブジェクトであるPivotItem.Headerプロパティでは実行できません。DataTemplatePivotItem

したがって、理論的には、コード (およびそのすべてのコンテンツ) でDataTemplateを作成し、それをPivot.HeaderTemplateプロパティに割り当てる必要があります。

1 つの解決策として、この記事で説明されている次の方法があります。

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、ヘッダーにバインドされているものDataTemplate(含まれているテキストなど) のみを変更したい場合は、プロパティに別の値を割り当てるだけで済みます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"};
于 2013-10-30T18:19:04.770 に答える