WPF中的tabcontrol问题

问题描述

有A和B两个窗口,A窗口为主窗口,上有一个TabControl控件,其中有三个标签页a1,a2,a3。在B窗口中有个按钮用于更改该Tabcontrol的tabcontrol.SelectedIndex=1;为什么第一次的时候可以成功,之后再点击按钮后,该tabcontrol在A窗口被选中后,其SelectedIndex又变成之前选择的标签页了呢(非1),在A窗口未选中前其SelectedIndex还是所设置的1?求大神解释;

解决方案

解决方案二:
贴个代码看看吧
解决方案三:
实际代码:A.xaml:<Window><Grid><TabControlName="tabcontrol"><TabItemHeader="tabItem1"></TabItem><TabItemHeader="tabItem2"></TabItem></TabControl><Buttonclick="button_Click">点击打开B窗口</Button></Grid></Window>B.xaml:<Window><Grid><Buttonclick="button_Click"></Button></Grid></Window>B.xaml.cs:privatevoidbutton_Click(objectsender,RoutedEventArgse){(App.Current.MainWindowasA).tabcontrol.SelectedIndex=1;}大概的代码如上所示,有哪位大神给解释下啊,或者给个解决方法。
解决方案四:
你不应该这样去先择。最好,每个tabItem给外Name,然后用TabItemtb=MainWindow.FindName("Item1")astabitem;//MainWindow为主前窗体,Item1就是tableItem的名字,变量传入就可以了if(tb!=null)//判断是否找到,以免在未添加前就误点了{tb.Focus();}
解决方案五:
感谢您的回答,你的这种方法我试过了,只在ShowDialog的情况下好使,在Show的情况下需要点击按钮两次后主页面的tabcontrol才将Item1选中;这个知道怎么回事吗?有解决方法吗?
解决方案六:
引用3楼loryrichie的回复:

你不应该这样去先择。最好,每个tabItem给外Name,然后用TabItemtb=MainWindow.FindName("Item1")astabitem;//MainWindow为主前窗体,Item1就是tableItem的名字,变量传入就可以了if(tb!=null)//判断是否找到,以免在未添加前就误点了{tb.Focus();}

感谢您的回答,你的这种方法我试过了,只在ShowDialog的情况下好使,在Show的情况下需要点击按钮两次后主页面的tabcontrol才将Item1选中;这个知道怎么回事吗?有解决方法吗?
解决方案七:
引用5楼eennddyy的回复:

Quote: 引用3楼loryrichie的回复:
你不应该这样去先择。最好,每个tabItem给外Name,然后用TabItemtb=MainWindow.FindName("Item1")astabitem;//MainWindow为主前窗体,Item1就是tableItem的名字,变量传入就可以了if(tb!=null)//判断是否找到,以免在未添加前就误点了{tb.Focus();}

感谢您的回答,你的这种方法我试过了,只在ShowDialog的情况下好使,在Show的情况下需要点击按钮两次后主页面的tabcontrol才将Item1选中;这个知道怎么回事吗?有解决方法吗?

我遇到过这个问题,但是没有解决掉,而是在主窗口中,主窗口中有一个winform的控件,也要点两次Item1,才能控制里面的winform的控件(暂时还没有找到替代winform的控件的方法),这个问题研究一下,如果有进展我告诉你。

时间: 2024-08-31 05:34:16

WPF中的tabcontrol问题的相关文章

WPF中的TabControl的TabItem标签上,是否可以加图标?

问题描述 最好有简单的方法. 解决方案 解决方案二:改模板,随便改<TabControl.ItemTemplate><DataTemplate><StackPanelOrientation="Horizontal"><TextBlockText="{BindingGroupName}"/><Image/></StackPanel></DataTemplate></TabCont

WPF 中怎么把一个Window类 转变为TabControl 的选项卡

问题描述 WPF中怎么把一个Window类转变为TabControl的选项卡转变成TabItem类 解决方案 解决方案二:就是把一个exe程序变为Tabcontrol的选项卡解决方案三:wpf如何把窗体设为顶级窗体'Window必须是树的根目录.不能将Window添加为Visual的子目录.'TransactionWindowwinTrans=newTransactionWindow();winTrans.Topmost=false;winTrans.WindowStyle=WindowStyl

UI前沿技术-WPF中的多点触控操作事件

就在过去几年,多点触控还只是科幻电影中表现未来主义的一种重要手法,现在俨然已经成为主流的用户界面技术.多点触控显示屏现在成了新型智能手机和 Tablet 计算机的标准显示屏.此外,它还可能在公共场所的计算机上普及,例如 Microsoft Surface 率先开发的网亭或桌面计算机. 实际存在的唯一不确定因素是多点触控在常规台式计算机上的普及.这种普及的最大障碍或许是长时间在垂直屏幕上移动手指所产生的疲劳(称为"大猩猩手臂").我个人希望多点触控的强大功能将切实推进桌面显示屏的重新设计

WPF中如何使用行为示例:Canvas控件拖放行为的演示

1.获取行为的支持,安装Expression Blend 4 SDK(http://www.microsoft.com/zh-cn/download/details.aspx?id=10801) . 2.创建行为库 (1)创建一个Class Project,添加WPF必备的以及WPF中支持行为必备的dll文件. 其中,System.Windows.Interactivity.dll组件在目录(需要安装Blend SDKs):C:\Program Files (x86)\Microsoft SDK

WPF中的Style(风格,样式)

在WPF中我们可以使用Style来设置控件的某些属性值,并使该设置影响到指定范围内的所有该类控件或影响指定的某一控件,比如说我们想将窗口中的所有按钮都保持某一种风格,那么我们可以设置一个Style,而不必分别设置每个按钮的风格. Style是作为一种资源被保存下来的. 看下面的例子: <Window.Resources>        <Style TargetType="Button">       <Setter Property="Fore

WPF 中 ICollectionView 及 ItemsControl 相关的重点

为 OEA 框架 做 WPF 树型表格控件时,浪费了许多时间在一些知识点上,所以写了这篇博客总结一下,和各位博友分享.   ICollectionView 接口的简易使用方法   它的 SortDescriptions.GroupDescription 等属性会影响视图的结构,一般情况下会自动刷新. 也可以直接使用 Refresh 方法来命令视图的刷新(内部实现一般为重建内部视图模型集合). 如果是批量操作,也可以使用 RefreshDefer 方法来抑制多次刷新,待多个更新操作后再统一刷新.

WPF中使用MediaElement控件来进行音视频播放

WPF中可以使用MediaElement控件来进行音视频播放,然后需要做个进度条啥的,但是MediaElement.Position(进度)和MediaElement.NaturalDuration居然都不是依赖属性,简直不能忍! 好吧,首先说说比较传统的做法(winform?) slider用来显示进度以及调整进度,tb1显示当前进度的时间值,tb2显示视频的时长. player_Loaded 事件中使用DispatcherTimer来定时获取当前视频的播放进度, player_MediaOp

在WPF中自定义你的绘制(五)

将我们的绘制转变为画刷 WPF中的画刷比GDI+中要强大得多,除了常用的实心画刷.渐变画刷外,还支持更多的平铺画刷,这包括DrawingBrush.ImageBrush.VisualBrush,其中DrawingBrush使得我们可以将自定义的绘制用于任何可以使用普通画刷的地方. 比如下面的代码,我们将自定义一个椭圆和一个矩形,然后将它们合并成一个图形并将 改图形用作窗口的背景画刷: public Window1() { InitializeComponent(); //background E

在WPF中自定义你的绘制(一)

在传统的Windows窗体编程中,如果我们需要打造一些比较个性化的控件,那么我们常常需要自定义控件的绘制(重写OnPaint等),即需要经常用到Graphics对象.而在WPF中,我们可以使用Xaml轻松编写出很有特色的界面元素,似乎与以前的以前利用Graphics对象手写代码绘制控件的日子越来越远了.其实在WPF中,如果我们需要低级别的自定义绘制同样是可以的,那么我们就需要一个名DrawingContext的类.与OnPaint方法相对应的是OnRender方法(当然,你也可以在其他地方进行绘