【问题标题】:UWPCommunityToolkit Master/Detail view how do I get selected item?UWPCommunityToolkit 主/详细视图如何获取选定项?
【发布时间】:2017-03-31 01:08:40
【问题描述】:

我正在尝试使用 UWPCommunityToolkit 中的 Master/Detail,我怎样才能获得所选项目的详细信息?我用一组匿名对象加载项目:

listOfReplayFiles = await ReplayDirectoryManager.GetAllReplaysFromReplayDirectoryAsync();
        foreach (var item in listOfReplayFiles)
        {
            SavedReplays.Add(new { ReplayName = item.Name, ReplayDateCreated = item.DateCreated });
        }

这就是我的 xaml 的样子

        <uwpkit:MasterDetailsView 
        RelativePanel.Below="pageHeader"
        ItemsSource="{Binding SavedReplays}">

        <uwpkit:MasterDetailsView.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Style="{ThemeResource TitleTextBlockStyle}" Text="{Binding ReplayName}" />

                    <TextBlock Style="{ThemeResource CaptionTextBlockStyle}">
                        <Run Text="Date Created: " />
                        <Run Text="{Binding ReplayDateCreated}" />
                    </TextBlock>
                </StackPanel>
            </DataTemplate>
        </uwpkit:MasterDetailsView.ItemTemplate>

        <!--<uwpkit:MasterDetailsView.DetailsTemplate>
            <DataTemplate>

            </DataTemplate>
        </uwpkit:MasterDetailsView.DetailsTemplate>-->

    </uwpkit:MasterDetailsView>

我尝试使用支持属性将 SelectedItem 添加到 xaml,但是当我选择项目时,我的设置器没有被触发。

【问题讨论】:

    标签: c# xaml uwp windows-community-toolkit


    【解决方案1】:

    UWPCommunityToolkit Master/Detail 视图我如何获得选定的项目?

    MasterDetailsView 控件以主/细节模式呈现项目。它在“主面板”中显示项目的集合,并在“详细信息面板”中显示该项目的详细信息。

    这样详细信息面板将显示当前选定的项目。您只需要将您的此项详细信息绑定到DetailsTemplate。例如,在详细信息面板中显示与主面板相同的内容可能如下:

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <uwpkit:MasterDetailsView 
        RelativePanel.Below="pageHeader"
        ItemsSource="{Binding}">
            <uwpkit:MasterDetailsView.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Style="{ThemeResource TitleTextBlockStyle}" Text="{Binding ReplayName}" />
                        <TextBlock Style="{ThemeResource CaptionTextBlockStyle}">
                        <Run Text="Date Created: " />
                        <Run Text="{Binding ReplayDateCreated}" />
                        </TextBlock>
                    </StackPanel>
                </DataTemplate>
            </uwpkit:MasterDetailsView.ItemTemplate>
            <uwpkit:MasterDetailsView.DetailsTemplate>
            <DataTemplate>
                    <StackPanel>
                        <TextBlock Style="{ThemeResource TitleTextBlockStyle}" Text="{Binding ReplayName}" />
                        <TextBlock Style="{ThemeResource CaptionTextBlockStyle}">
                        <Run Text="Date Created: " />
                        <Run Text="{Binding ReplayDateCreated}" />
                        </TextBlock>
                    </StackPanel>
                </DataTemplate>
        </uwpkit:MasterDetailsView.DetailsTemplate>
        </uwpkit:MasterDetailsView>
    </Grid>
    

    更多详情请参考MasterDetailsView sample

    【讨论】:

    • 我需要在选择项目时进行额外处理,所以我不能拥有相同的主对象和细节对象,否则我的应用程序会很慢。
    • 你的意思是master和detail在你这边使用不同的物品来源吗? @haosmark
    • 是的,这就是我想做的。
    • @SunteenWu-MSFT 我也想要同样的东西。
    • @haosmark 如果你找到了方法,请回复你的帖子
    猜你喜欢
    • 2016-10-16
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多