2009-09-12 30 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

相關問題