RibbonGallery 最近的项目:MVVM 方法避免最后单击的项目保持选中状态

Recent items with RibbonGallery: MVVM way to avoid last clicked item from remaining selected

实际上这听起来像是一个基本问题,但我找不到合适的 MVVM 方法来防止最后点击的项目保留 selected。

我使用 RibbonGallery 显示最近打开的项目列表:

XAML:

<RibbonGallery Grid.Row         = "1"
               CanUserFilter    = "False"
               Command          = "{Binding cmdOpenRecent}"

               ScrollViewer.VerticalScrollBarVisibility = "Auto">

    <RibbonGalleryCategory Background   = "Transparent" 
                           ItemsSource  = "{Binding RecentProjects}">

        <RibbonGalleryCategory.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Vertical" IsItemsHost="True"/>
            </ItemsPanelTemplate>
        </RibbonGalleryCategory.ItemsPanel>

    </RibbonGalleryCategory>

</RibbonGallery>

当我 select 一个条目时,命令被调用,我可以打开文件。

现在的问题是最后点击的条目仍然是 selected 并且似乎没有一个干净的方法来避免这种情况:

是否有任何正确的 MVVM 方法没有代码隐藏来避免这种行为?!非常感谢!!!

为了记录,我没有找到一个像样的方法来实现上述清除列表中最后选择的项目。

所以我进行了如下操作(对我来说感觉更像是一个肮脏的hack/workaround...):

我将 RibbonGallerySelectedItem 属性 绑定到 ViewModel 的 属性 的唯一目的是将此值重置为 null。 ..

<RibbonGallery Grid.Row         = "1"
               CanUserFilter    = "False"
               Command          = "{Binding cmdOpenRecent}" 
               CommandParameter = "{Binding RelativeSource={RelativeSource Self}, Path=SelectedItem}"
               SelectedItem     = "{Binding RecentSelectedLessonBook}"

               ScrollViewer.VerticalScrollBarVisibility = "Auto">

    <RibbonGalleryCategory Background   = "Transparent" 
                           ItemsSource  = "{Binding RecentLessonBooks}">

        <RibbonGalleryCategory.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Vertical" IsItemsHost="True"/>
            </ItemsPanelTemplate>
        </RibbonGalleryCategory.ItemsPanel>

        <RibbonGalleryCategory.ItemTemplate>
            <DataTemplate DataType="proptypes:SettingRecentLessonBook">
                <TextBlock Text="{Binding bookName}" ToolTip="{Binding bookFolder}" />
            </DataTemplate>
        </RibbonGalleryCategory.ItemTemplate>

    </RibbonGalleryCategory>

</RibbonGallery>

如果有更好的 MVVM 方法来实现这一点......欢迎您! :)