0

我一直在玩 Windows 8 代码示例 - 即 BlogReader 应用程序。如果您对此不熟悉,它由一个包含两列的网格组成。左边是一个带有提要项目标题的 ListView。单击时,它会在右列中使用提要条目填充 WebView。

而不是显示在右侧,我想将 WebView 直接嵌入相关列表项的下方,就像 Google Reader 所做的那样(基本上是手风琴视图)。这就是我想出的。

      <ListView x:Name="ItemListView"  
            ItemsSource="{Binding Items}"
            Margin="60,0,0,10"
            SelectionChanged="ItemListView_SelectionChanged">

            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Title}"  
                       FontSize="24" Margin="5,0,0,0" TextWrapping="Wrap" />
                        <TextBlock Text="{Binding Author}" 
                       FontSize="16" Margin="15,0,0,0"/>
                        <TextBlock Text="{Binding Path=PubDate, Converter={StaticResource dateConverter}}" 
                       FontSize="16" Margin="15,0,0,0"/>
                        <WebView Margin="0,5,20,20"/>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>

        </ListView>

如何访问 ListItem 中的 WebView?我知道渲染后我无法访问模板,但必须有办法在 ListItem 中访问该 WebView?或者它只是从未创建过?

我尝试了很多不同的方法来访问 listView 的选定项目,然后寻找没有成功的孩子

4

1 回答 1

0

与其插入 webview,不如简单地将 的 设置为VisibilityWebview直到Collapsed您准备好使用它。在您绑定的每个项目ListView上,都有两个属性:一个是 webview 的内容,另一个是绑定到 webview 的可见性。这样,您可以通过更改 content 属性的值来设置 webview 的内容,然后只需将其可见性更改为Visible.

像这样的东西:

public class Item
{
    Uri content;
    public Uri Content
    {
        get
        {
            return content;
        }
    }
    public Visibility Visible
    {
        get
        {
            if(content != null)
                return Visibility.Visible;
        }
    }
}

<WebView Content="{Binding Content}" Visibility="{Binding Visible}" Margin="0,5,20,20"/>
于 2012-09-19T16:16:12.883 回答