2013-02-02 48 views
0

我已经创建了透视页面,并且希望在顶部的2个文本块中显示一些信息。我创建了DataTemplate并为文本字段设置了x:名称。但我不能从页面构造函数到这个文本块并放置文本。为什么?我该如何欺骗这种情况?我需要在页面加载时放入文本块信息。将文本设置为自定义标题页面枢纽

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

回答

2

使用DataTemplate的要点是定义业务对象的表示。也就是说,如果你有一个像类以下内容:

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

如果您设置透视控制这个类的一个实例的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> 

然后从后台代码,你将设置枢轴控件的Title属性。事情是这样的:

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

还有另一种方法可以做到这一点,这将让你简单地从代码中设置文本框后面,但这并不涉及到一个DataTemplate。

设置类似如下的枢轴控件的Title属性,将使您的文本框的通过名称来访问:

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

Read this article for more on DataTemplates

+0

谢谢,我知道如何使用DataTemplate中,但没”了解如何将它们应用于页面 –