我已将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>
答案 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);
}