0

我已经创建了数据透视页面,我希望在顶部的 2 个文本块中显示一些信息。我创建了 DataTemplate 并为文本字段设置了 x:names。但是我不能从页面构造函数到这个文本块并在那里放置文本。为什么?我怎么能欺骗这种情况?我需要在页面加载时将信息放入文本块中。

        <controls:Pivot.TitleTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock x:Name="textBlock_eventID" TextWrapping="NoWrap" Margin="0"/>
                    <TextBlock x:Name="textBlock_eventName"  TextWrapping="NoWrap" Opacity="0.7"/>
                </StackPanel>
            </DataTemplate>
        </controls:Pivot.TitleTemplate>
4

1 回答 1

2

使用 DataTemplate 的目的是定义业务对象的表示。也就是说,如果你有一个像下面这样的类:

public class MyClass
{
    public string StringOne { get; set; }
    public string StringTwo { get; set; }
}

如果将 Pivot 控件的 Title 属性设置为此类的实例,则可以使用 DataTemplate 来定义您希望它的外观。

在您的情况下,模板可能如下所示:

    <controls:Pivot.TitleTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding StringOne}" TextWrapping="NoWrap" Margin="0"/>
                <TextBlock Text="{Binding StringTwo}" TextWrapping="NoWrap" Opacity="0.7"/>
            </StackPanel>
        </DataTemplate>
    </controls:Pivot.TitleTemplate>

然后从代码隐藏中,您将设置 Pivot 控件的 Title 属性。像这样的东西:

 myPivotControl.Title = new MyClass 
     { 
         StringOne = "Some String", 
         StringTwo = "Some other string" 
     };

还有另一种方法可以做到这一点,它允许您从后面的代码中简单地设置文本框,但这不涉及 DataTemplate。

如下设置 Pivot 控件的 Title 属性,将使您能够按名称访问 TextBox:

    <controls:Pivot.Title>
        <StackPanel Orientation="Horizontal">
            <TextBlock x:Name="textBlock_eventID" TextWrapping="NoWrap" Margin="0"/>
            <TextBlock x:Name="textBlock_eventName"  TextWrapping="NoWrap" Opacity="0.7"/>
        </StackPanel>
    </controls:Pivot.Title>

阅读本文以了解有关 DataTemplate 的更多信息

于 2013-02-03T10:04:51.030 回答