Получите доступ к именованному TextBox в коде из DataTemplate ContentPresenter - PullRequest
0 голосов
/ 12 сентября 2009

Я пытаюсь получить доступ к названному TextBox (textBoxAnswer) в коде моей страницы WPF. Проблема в том, что, поскольку он является частью DataTemplate, он не генерируется автоматически как закрытый член класса, как если бы я не использовал ContentPresenter + DataTemplate. (Я использую DataTemplate, потому что мне нужно использовать DataTrigger s, не включенный в приведенный ниже пример).

Я пытался дозвониться до 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 Ответ

2 голосов
/ 12 сентября 2009

Дайте имя ContentPresenter (я предполагаю, что это cpAnswer) и получите доступ к текстовому полю с помощью FindName метода шаблона:

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