当我在 FilteringMode="FilterRow" 中更改过滤器运算符时,RadPane 关闭

问题描述 投票:0回答:1

我在 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 错误。当 RadDocking 收到鼠标点击时,它会检查它是否在它的窗格集合中 - 然后它会尝试在失去焦点时关闭未固定的 radpane,并且当单击过滤器运算符弹出窗口时它会失去焦点。我试图捕获鼠标点击这个弹出窗口,并执行

event.Hadled = true
,但它不起作用,因为它也阻止了过滤器操作符的更改。我想也许有一个 RadDocking 在关闭 radpane 时调用的事件,我可以通过获取鼠标坐标和我的 radpane 的宽度/高度来取消它,但我找不到这样的东西

wpf telerik raddocking
1个回答
0
投票

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

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

至少,它对我有用

© www.soinside.com 2019 - 2024. All rights reserved.