qq_26234177 2020-04-15 15:13 采纳率: 0%
浏览 528

WPF TabControl tabitem绑定另一个tabitem的内容 运行后点击内容区会跳转异常

问题描述:b和c的content绑定了a的content,运行时,当点击内容区域时,当前选项卡会变到c,请问怎么才能不变呢?

最简代码如下:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <TabControl Margin="20" ClipToBounds="False">
            <TabItem x:Name="a" Header="a"  Height="20" Padding="5">
                <Grid Background="Gray">
                </Grid>
            </TabItem>
            <TabItem Header="b" Content="{Binding ElementName=a,Path=Content,Mode=OneTime}">
            </TabItem>
            <TabItem Header="c" Content="{Binding ElementName=a,Path=Content,Mode=OneTime}">
            </TabItem>
        </TabControl>
    </Grid>
</Window>


我自己解决了,记录一下。其实很简单,只要tabitem中的Grid添加PreviewMouseDown事件,在事件中中断事件路由就OK了。下面是示例:

private void Grid_PreviewMouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.Source is TouchableScrollViewer) return;//这里是我不需要中断事件路由的控件
            e.Handled = true;//中断事件路由
        }
  • 写回答

2条回答 默认 最新

  • 韩小非 2020-04-16 13:43
    关注

    主要问题还是你把a,b,c的布局绑在一起了,点了a的布局,就跳到了c的布局。

    把布局绑在一起可能意义不太大吧,可以在a里面创建一个按钮,c里面创建文本框。把按钮和文本框绑在一起。

    希望对你有帮助。

    评论

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型