Кодовый компонент не может найти элемент управления, объявленный в XAML

После поисков в течение некоторого времени, x:Name должно быть решением моей проблемы.

В моем wtfapp.xaml есть TextBlock это будет создано во время выполнения:

<TextBlock x:Name="wtf" Text="{Binding fTx}"/>

В коде позади он должен быть доступен, поэтому я попытался изменить его цвет переднего плана:

wtf.Foreground = Brushes.DarkGreen;

Когда я компилирую, появляется ошибка:

Название "wtf" не существует в текущем контексте.

Если я не ошибаюсь, значит TextBlock "wtf" не доступен.

Как я могу разрешить ссылку?

РЕДАКТИРОВАТЬ:

XAML:

    <DataTemplate x:Key="ItemTemplate_NextAnime_HOVER">
        <Grid Margin="2,0,1,0" Width="82" Height="120" >
            <Image x:Name="NxtAnime_Image" Width="82" Height="120" Stretch="UniformToFill" Panel.ZIndex="0">
                <Image.Source>
                    <BitmapImage UriCachePolicy="Revalidate" UriSource="{Binding rLocalPic}"/>
                </Image.Source>
            </Image>
            <Grid Panel.ZIndex="1" >
                <Border Background="#7F000000" Panel.ZIndex="0" x:Name="brd">
                    <Popup IsOpen="True" StaysOpen="True" PlacementTarget="{Binding ElementName=brd}" Placement="Top">
                        <StackPanel Background="#FFC54B4B" Orientation="Horizontal" Height="334" Width="430">
                            <Image Width="213" Height="326" Stretch="UniformToFill" Margin="4,4,4,6" Source="{Binding LocalPic}"/>
                            <StackPanel Orientation="Vertical" Margin="4,4,4,4" Name="are">
                                <TextBlock Margin="0,0,0,10" Text="{Binding Title}" FontSize="22" Foreground="White" TextWrapping="Wrap" MaxWidth="200" FontWeight="Bold"/>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Relation: " FontSize="20" Foreground="White"/>
                                    <TextBlock x:Name="wtf" Text="{Binding Type}" FontSize="20" Foreground="White"/>
                                </StackPanel>
                            </StackPanel>
                        </StackPanel>
                    </Popup>
                </Border>
            </Grid>
        </Grid>
    </DataTemplate>

Это DataTemplate за ListBoxItem,

1 ответ

Решение

Сложно получить элемент из шаблона, так как шаблон похож на фабрику и будет генерировать несколько экземпляров.

Как предполагает user2946329 в комментариях, элементы ListBox возвращают строку, когда DataTemplate is Button отвечает, как получить элемент, но может быть другой способ сделать то, что вы хотите.

Например, если вы хотите изменить цвет wtf Элемент вы можете сделать это с помощью триггера.

<DataTemplate.Triggers> <DataTrigger Binding="{Binding ...}" Value="False"> <Setter TargetName="wtf" Property="Foreground" Value="DarkGreen"/> </DataTrigger> </DataTemplate.Triggers>

Другие вопросы по тегам