我在 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 的宽度/高度来取消它,但我找不到这样的东西
为了解决这个问题,您应该在用作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;
}
}
至少,它对我有用