RibbonComboBox选择的图库项目在鼠标离开时恢复为旧值

时间:2010-10-22 16:01:05

标签: c# wpf ribbon

我已将WPF色带替换为最新的库,组合框选择更改触发重载数据网格。我有RibbonComboBox的问题。

如果我使用鼠标光标离开所选项目,则所选项目将还原为旧项目。如果我将光标放在所选项目上,直到datagrid重新加载完成,则新的值将被tapecombobox接受。

我是否会错过一些特殊的ribboncombobox属性来接受仅通过点击进行更改,或者这是组合框组件中的错误? 只有可能的解决方法是在线程中启动datagrid重载功能,让功能区组合框完成其过程。

示例代码:

<r:RibbonComboBox>
       <r:RibbonGallery SelectedValuePath="Content" SelectionChanged="pgSize_SelectionChanged">
         <r:RibbonGalleryCategory>
            <r:RibbonGalleryItem Tag="20" Content="Size (20)" Foreground="Green" />
            <r:RibbonGalleryItem Tag="30" Content="Size (30)" Foreground="Green" IsSelected="True"/>
            <r:RibbonGalleryItem Tag="50" Content="Size (50)" Foreground="Orange" />
            <r:RibbonGalleryItem Tag="100" Content="Size (100)" Foreground="Red" />
         </r:RibbonGalleryCategory>
       </r:RibbonGallery>
</r:RibbonComboBox>      

2 个答案:

答案 0 :(得分:1)

这是功能区控件中的错误。请参阅Connect bug report

答案 1 :(得分:0)

以下提供了一个功能正常的解决方法(.Net 4.0),基于Connect Bug中给出的解决方法。

我发现您只需要Mouse.Capture(null)事件{/ 1}}:

SelectionChanged

后面的代码如下:

<ribbon:RibbonComboBox>
    <ribbon:RibbonGallery SelectedItem="{Binding X}"
                          DisplayMemberPath="Name"
                          SelectionChanged="RibbonGallery_SelectionChanged">
        <ribbon:RibbonGalleryCategory ItemsSource="{Binding Y}"
                                      DisplayMemberPath="Name" />
    </ribbon:RibbonGallery>
</ribbon:RibbonComboBox>

或者,作为派生类:

void RibbonGallery_SelectionChanged(
    object sender,
    RoutedPropertyChangedEventArgs<object> e)
{
    Mouse.Capture(null);
}