wpf 在FilteringMode=“FilterRow”中更改筛选运算符时RadPane关闭

1wnzp6jl  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(142)

我在RadDocking的RadPaneGroup中有一个RadPane

<telerik:RadPane x:Name="MyPinTab"
                                         Header="PinTab"
                                         IsPinned="False"
                                         CanFloat="False"
                                         CanUserClose="False"
                                         IsTabStop="False">
                                <views:MyPinTabView
                                        Tag="{Binding DataContext.MyPinTabViewModel, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, 
                                                                                                            NotifyOnTargetUpdated=True}"
                                        TargetUpdated="MyPinTab_OnUpdated" />

在这个RadPane中,我有FilteringMode="FilterRow"的RadTreeListView。当我尝试在UI中更改过滤器运算符时,RadPane关闭,我该如何解决这个问题?
所以很明显是RadPane的bug。当RadDocking接收到鼠标点击时,它会检查它是否在它的窗格集合中--然后它会在失去焦点时尝试关闭未固定的radpane,当过滤操作符弹出窗口被点击时,它会失去焦点。我试图捕捉这个弹出窗口上的鼠标点击,并执行event.Hadled = true,但它不工作,因为它阻止过滤器操作符的变化,以及。我想也许有一个事件,其中RadDocking调用当它关闭radpane,在那里我可以取消它通过获得鼠标坐标和宽度/高度我的radpane,但我找不到这样的东西

bis0qfac

bis0qfac1#

为了解决此问题,您应该在UserControl中为OnPreviewLostKeyboardFocus事件创建方法,UserControl用作RadPane的视图,使用以下代码:

private void MyRadPaneView_OnPreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
    {
       
        if (e.NewFocus is System.Windows.Controls.ListBoxItem item)
        {
            e.Handled = true;
            item.IsSelected = true;
        }
    }

至少对我有用

相关问题