Я работаю над приложением UWP, и мне нужна помощь с Flyout. У меня есть Flyout в моем XAML с несколькими элементами TextBlock, но, похоже, я не могу вызывать эти элементы в Code Behind. Каждый раз, когда я пытаюсь это сделать, я получаю исключение «Имя TB не существует в текущем контексте».
Я уже искал возможные решения и пробовал следующее: сделал чистую сборку, перезапустил VS 2017, очистил папку bin вручную, а затем попытался восстановить
Но, похоже, ничего не работает, и я нахожусь в точке, где не знаю, что делать.
<Page
x:Class = "FuhrparkUWP.Pages.Parkhaeuser"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:converter = "using:FuhrparkUWP.Converter"
xmlns:data = "using:FuhrparkStructureUWP.Model"
mc:Ignorable = "d"
Background = "{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Page.Resources>
<converter:PassendFuerToStringConverter x:Key = "PassendFuerToStringConverterKey"></converter:PassendFuerToStringConverter>
<converter:BelegtStatusToImageConverter x:Key = "BelegtStatusToImageConverterKey"></converter:BelegtStatusToImageConverter>
</Page.Resources>
<Grid>
<ComboBox Name = "CmbSelectParkhaus" Header = "Parkhaus" HorizontalAlignment = "Center" VerticalAlignment = "Top" Width = "200" SelectionChanged = "CmbSelectParkhaus_SelectionChanged"/>
<GridView ItemsSource = "{x:Bind Parkplaetze}" Name = "ContentGrid" HorizontalAlignment = "Center" VerticalAlignment = "Top" Margin = "0, 100, 0, 0">
<GridView.ItemTemplate>
<DataTemplate x:Name = "ImageTextDataTemplate" x:DataType = "data:Parkplatz">
<StackPanel Height = "280" Width = "180" Margin = "12" Tapped = "Content_Tapped">
<Image Source = "{Binding Path=IstBelegt, Converter = {StaticResource BelegtStatusToImageConverterKey}}" Height = "180" Width = "180" Stretch = "UniformToFill"/>
<StackPanel Margin = "0,12">
<TextBlock Text = "{x:Bind FahrzeugKennzeichen}"/>
<TextBlock Text = "{Binding Path=PassendFuer, Converter = {StaticResource PassendFuerToStringConverterKey}}" Style = "{ThemeResource CaptionTextBlockStyle}" Foreground = "{ThemeResource SystemControlPageTextBaseMediumBrush}"/>
</StackPanel>
<FlyoutBase.AttachedFlyout>
<Flyout>
<StackPanel>
<Image Source = "/Assets/Images/ParkplatzFrei.png" Width = "180" Height = "180"></Image>
<TextBlock Name = "TB"></TextBlock>
<TextBlock Text = "Passend für: LKW, PKW, Motorrad"></TextBlock>
<TextBlock Text = "Belegt durch: FREI"></TextBlock>
</StackPanel>
</Flyout>
</FlyoutBase.AttachedFlyout>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</Grid>
</Page>
Я ожидаю, что вызову TB.Text = "xyz", например, со страницы Code Behind, но в настоящий момент я не могу это вызвать.
Я все еще могу вызывать другие элементы вне всплывающего окна, например, «CmbSelectParkhaus».





Вы не можете обрабатывать вещи внутри DataTamplate, они не являются фактическими объектами пользовательского интерфейса, они являются шаблонами.
Предполагая, что вы хотите добиться одинакового доступа ко всем элементам GridView, вам необходимо присоединить свойства зависимости и либо создать программные привязки для PrepareContainerForItemOverride, либо для соответствующих выражений xaml "{Привязка}".
Это просто открывает совершенно новую кроличью нору, особенно если вы не знаете хотя бы об одной вещи, о которой я упоминал до сих пор, но вы можете просто искать слова, выделенные жирным шрифтом, одно за другим.
хорошо, затем поместите всплывающее окно на <Page.Resources> и покажите его из кода, например Myflyout.ShowAt (некоторый элемент)
Я не видел, чтобы все было внутри таблички с данными, вам нужно будет использовать свойство зависимости для достижения широкого таргетинга привязки
Перемещение его в <Page.Resources> и удаление FlyoutBase.AttachedFlyout сделали это! Теперь я могу вызывать элементы внутри него! Спасибо! Вы знаете причину проблемы?
Я отредактировал его в своем первоначальном ответе, объяснив, почему то, что вы пытаетесь, не сработало.
Спасибо, по крайней мере, первое, что мне кажется, имеет смысл, если я задумаюсь над этим. Но я посмотрю и другие вещи, о которых вы упомянули. Здесь для обучения.
... или stackoverflow.com/questions/44492970/…
Возможный дубликат Как найти контроль на табличке с данными tabitem wpf