2009-09-12 45 views
0

我想要访问我的WPF页面后面的代码中的名为TextBox(textBoxAnswer)。问题在于,因为它是DataTemplate的一部分,所以不会自动生成该类的私有成员,就像我没有使用ContentPresenter + DataTemplate那样。 (我正在使用DataTemplate,因为我需要使用DataTrigger,未包括在下面的示例中)。在ContentPresenter的DataTemplate后面的代码中访问一个已命名的TextBox

我试过拨打FindResource("textBoxAnswer")FindName("textBoxAnswer"),但都没有返回任何内容。

有什么建议吗?这是我的XAML的一个精简版:

<Page x:Class="LearningGames.Numbers.NumbersPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
<ContentPresenter Content="{Binding}"> 
    <ContentPresenter.ContentTemplate> 
     <DataTemplate> 
      <Grid> 
       <TextBox Margin="5" x:Name="textBoxAnswer" 
       Text="{Binding Answer}" /> 
      </Grid> 
     </DataTemplate> 
    </ContentPresenter.ContentTemplate> 
</ContentPresenter> 

回答

1

给一个名称ContentPresenter(我会假设它是cpAnswer),并与模板的FindName方法访问文本框:

TextBox textBoxAnswer = cpAnswer.ContentTemplate.FindName("textBoxAnswer", cpAnswer) 
as TextBox; 
+0

辉煌,谢谢!我已经接受了答案,但是您已经修复了一个小错误 - 应该是.ContentTemplate,而不是.DataTemplate。另外,不应该在构造函数中调用,但只能在页面加载后调用。 – 2009-09-12 18:43:47

相关问题