0

我尝试通过 RibbonComboBox 的代码修改所选项目:

<r:RibbonComboBox x:Name="RibbonComboxBoxEditEnemyProjectiles" Label="Projectile"   SmallImageSource="img/history16.png">
    <r:RibbonGallery SelectedItem="{Binding Path=iSpriteIdx}" >
        <r:RibbonGalleryCategory ItemsSource="{Binding oProjectiles, Source={StaticResource GameInfos}}" />
    </r:RibbonGallery>
</r:RibbonComboBox>

我尝试两种方法:

RibbonGalleryEditProjectileSprite.SelectedItem  = GameData.oSprites[ idx ];
RibbonGalleryEditProjectileSprite.SelectedValue = GameData.oSprites[ idx ];

这种方法行不通。这样做的正确方法是什么?

谢谢

4

1 回答 1

1

如果您在发布问题之前搜索此网站,您可以找到很好的答案……看看这篇文章这篇文章

更新>>>

如何使用 MVVM 在 RibbonComboBox 上设置 SelectedItem?我给你一个链接的帖子有一个完整的解决方案。基本上答案是这样的:

无论您设置为什么对象,都RibbonGallery.DataContext应该有一个要绑定到该属性的集合RibbonGalleryCategory.ItemsSource属性和一个与要绑定到该属性的集合项相同类型的RibbonGallery SelectedItem属性。

假设您选择的项目属性被调用SelectedItem。然后,您将能够将SelectedItem您设置为 的对象的属性设置为集合中RibbonGallery.DataContext的项目,并且绑定将更改RibbonGalleryUI 中的选定项目。

请注意,如果您使用对象作为图库数据类型(而不是像string等这样的原始数据类型),那么这仅在您将SelectedItem属性设置为集合中的实际项目而不是具有相同值的项目时才有效。如果您的数据对象具有具有唯一值的属性,则可以通过以下方式轻松实现这一点:

DataContextData.SelectedItem = DataContextData.CollectionData.Where(d => d.Id == 
itemToSelect.Id).Single();

如果这仍然没有帮助,我在网上进行了快速搜索并找到了一个完整的解决方案,您可以在我如何将画廊添加到我的功能区?在“Windows Presentation Foundation 团队的官方博客”上发帖。它展示了我刚才描述的方法的一个很好的例子。

于 2013-07-22T15:06:46.180 回答