实际上,这听起来像是一个基本问题,但我找不到合适的MVVM方法来保持最后单击的项目不被选中。
我使用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>
当我选择一个条目时,命令将被调用,并且我可以打开文件。
现在的问题是,最后单击的条目保持选中状态,似乎没有一种避免这种情况的干净方法:
是否有任何适当的MVVM方法,没有代码可避免这种现象?!提前非常感谢!
出于记录,我没有找到一种不错的方法来实现对列表中最后一个选定项目的上述清除。
所以我进行了如下操作(对我来说,这更像是一个肮脏的hack /解决方法...):
我将SelectedItem
的RibbonGallery
属性绑定到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方法可以实现这一目标。...您好! :)