无法从“隐藏代码”中访问XAML中的Flyout内部的元素

时间:2019-01-13 21:24:45

标签: c# xaml uwp

我正在处理UWP应用程序,并且需要有关Flyout的一些帮助。我的XAML中有一个弹出框,其中包含一些TextBlock元素,但似乎无法在“隐藏代码”中调用这些元素。每次尝试时,都会出现异常“名称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”,但目前无法调用它。

尽管如此,我仍然可以从Flyout调用其他元素,例如“ CmbSelectParkhaus”。

1 个答案:

答案 0 :(得分:0)

您无法处理DataTamplate内的内容,数据放大不是实际的ui实体,它们是模板。

假设要在所有GridView项上实现相同类型的访问,则必须附加依赖属性,然后在 PrepareContainerForItemOverride 上创建程序化绑定,或者适当的xaml“ { Binding }”表达式。

这只会打开一个新的兔子洞,特别是如果您至今为止至少不知道我提到的一件事,但是您可以一个一个地查找加粗的单词。

相关问题