【问题标题】:Windows Store App - XAML UI element not visible in C# codeWindows 应用商店应用程序 - XAML UI 元素在 C# 代码中不可见
【发布时间】:2013-09-10 07:36:24
【问题描述】:

我有以下 XAML 代码,后面的 C# 代码中唯一可用的元素是 Grid 和 FlipView。如何使代码中的 ScrollViewer、Image 或 Viewbox 可见?

XAML:

<Grid x:Name="gridViewPages">
        <FlipView x:Name="FlipView1" Loaded="FlipView1_Loaded" Style="{StaticResource FlipViewPreviewIndicator}" Tapped="FlipView1_Tapped">
            <FlipView.ItemTemplate>
                <DataTemplate>
                    <ScrollViewer x:Name="pagesScrollViewer" ZoomMode="Enabled"
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    HorizontalScrollBarVisibility="Hidden"
                                    VerticalScrollBarVisibility="Hidden"
                                    MinZoomFactor="1.0"
                                    MaxZoomFactor="3.0"
                                    Margin="0"
                                    Width="1500" DoubleTapped="PagesScrollViewer_DoubleTapped">
                        <Viewbox x:Name="pagesViewbox">
                            <Image Source="{Binding}"
                               Height="730"
                               x:Name="pageImage" Stretch="Uniform" Loaded="MainImage_Loaded"/>
                        </Viewbox>
                    </ScrollViewer>
                </DataTemplate>
            </FlipView.ItemTemplate>  
        </FlipView>
    </Grid>

翻转视图是自定义的,还包含一个定义在其中的列表视图,在代码中也不可见...:

<Page.Resources>
 ...
<ListView x:Name="pagesPreview" HorizontalAlignment="Center" Height="100" VerticalAlignment="Bottom" Width="Auto"
                                              ItemsSource="{TemplateBinding ItemsSource}"
                                              SelectedItem="{Binding SelectedItem, Mode=TwoWay, RelativeSource={RelativeSource Mode=TemplatedParent}}"
                                              ScrollViewer.HorizontalScrollBarVisibility="Auto"
                                              ScrollViewer.VerticalScrollBarVisibility="Disabled"
                                              ScrollViewer.HorizontalScrollMode="Enabled"
                                              ScrollViewer.VerticalScrollMode="Disabled"
                                              Background="AliceBlue"
                                              Opacity="1" 
                                              SelectionChanged="pagesPreview_SelectionChanged"
                                              Visibility="Visible">
                                        <ListView.ItemsPanel>
                                            <ItemsPanelTemplate>
                                                <StackPanel  Orientation="Horizontal" />
                                            </ItemsPanelTemplate>
                                        </ListView.ItemsPanel>
                                        <ListView.ItemTemplate>
                                            <DataTemplate>
                                                <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
                                                    <Image Source="{Binding}" Stretch="UniformToFill"/>
                                                </Grid>
                                            </DataTemplate>
                                        </ListView.ItemTemplate>
                                    </ListView>
 ...
</Page.Resources>

【问题讨论】:

  • 分享你的代码。那么只有我们才能回答你

标签: c# xaml user-interface microsoft-metro


【解决方案1】:

看flipview的基本概念就是要有多个页面才有翻转的效果。因此,无论 Data 模板包含什么,都会重复多次。因此,如果您希望 x:Name 出现,那么您将不会成功。

据我所知有两种方法:

VisualTreeHelper -> 更多细节请点击此链接

Get elements from data template

您可以手动迭代翻转视图元素并跟踪翻转视图的子级。在调试模式下尝试一下,您将大致了解之后会发生什么。只需跟踪要修改的选定索引位置的元素

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    相关资源
    最近更新 更多