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...):
我将 RibbonGallery
的 SelectedItem
属性 绑定到 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 方法来实现这一点......欢迎您! :)
实际上这听起来像是一个基本问题,但我找不到合适的 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...):
我将 RibbonGallery
的 SelectedItem
属性 绑定到 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 方法来实现这一点......欢迎您! :)