Richard.Ma 发表于 2020-4-24 10:33:01

只是拖动到另一个位置的话是可以的,但是还有一种情况就是和另一个Docking合并,这样这个dockingtabcontrol就不是原来的了,没有办法再做双击

chengyafan001 发表于 2020-4-24 11:20:07

我测试过,dockingtabcontrol的内存地址都没有变,怎么能不是原来的呢?

Richard.Ma 发表于 2020-4-24 12:26:50

抱歉,有点没有说清楚,这dockingtabcontrol确实没有消失,但是已经隐藏了
而屏幕上显示的已经是其他的DockingTab,我会在帮你看看有没有其他的办法

chengyafan001 发表于 2020-4-24 18:41:40

那还麻烦您尽快看一下,我这边还是比较着急的

Richard.Ma 发表于 2020-4-26 09:29:52

本帖最后由 Richard.Ma 于 2020-4-26 10:28 编辑

抱歉还未能找到合适的解决办法,我尝试了给最外层的C1DockControl直接加MouseDoubleClick,这样可以保证在任何情况下都可以触发,但是无法区分是哪一各DockTabControl被点击了。我今天会和研发同事再沟通一下看看有没有其他的办法

Richard.Ma 发表于 2020-4-28 09:49:18

如之前所说,拖动C1DockTabControl时,会创建其新实例,并且该实例未将你的处理方法注册到MouseDoubleClick事件。
可以在xaml中使用EventSetter来注册事件处理程序,如下所示:
你可以测试一下

<Window.Resources>
      <Style x:Key="DockTabControlDoubleClick" TargetType="c1:C1DockTabControl">
         <EventSetter Event="MouseDoubleClick" Handler="dockTabControl1_MouseDoubleClick"></EventSetter>
      </Style>
</Window.Resources>

<c1:C1DockTabControl x:Name="dockTabControl1" Style="{StaticResource DockTabControlDoubleClick}">
   <c1:C1DockTabItem Header="Tab 1">
         <TextBlock FontSize="30" Margin="10" Text="70% Width"></TextBlock>
   </c1:C1DockTabItem>
</c1:C1DockTabControl>

chengyafan001 发表于 2020-4-28 13:53:12

OK,完美解决了我的问题,并且还对我之前的优化了,不需要添加的时候一个个注册事件了,非常感谢

Richard.Ma 发表于 2020-4-28 17:53:04

不客气
页: 1 [2]
查看完整版本: C1DockTabControl在拖拽后双击事件消失