Кодовый компонент не может найти элемент управления, объявленный в 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>