Pie*_*ant 35 wpf tabcontrol tabitem
我想知道如何在WPF TabControl中选择特定的TabItem.
我尝试过这些但是没有用!
MyTabControl.SelectedIndex = x
MyTabControl.SelectedItem = MyTabItem
MyTabControl.SelectedValue = MyTabItem
MyTabItem.IsSelected = True
Run Code Online (Sandbox Code Playgroud)
Adr*_*ala 43
正如@Chris所说,前三件事中的任何一件都应该有效,正如@Phyxx所说,它并不总是真的有效.问题是关于财产变化顺序的一些微妙之处.要解决它,您需要让WPF在其自己的时间内调用您的选项卡选择代码:
Dispatcher.BeginInvoke((Action)(() => MyTabControl.SelectedIndex = x));
Run Code Online (Sandbox Code Playgroud)
这就是Phyxx'计时器的作用,但是稍微不那么极端.
HCL*_*HCL 22
您的所有示例除了第三个示例都是正确的并且将起作用.问题必须在另一个地方.也许您在设置后重置项目或从未调用您的代码?
有效
MyTabControl.SelectedIndex = x
MyTabControl.SelectedItem = MyTabItem
MyTabItem.IsSelected = True
Run Code Online (Sandbox Code Playgroud)
无效
MyTabControl.SelectedValue = MyTabItem
Run Code Online (Sandbox Code Playgroud)
小智 14
循环通过TabItems并选择要设置的选项卡
tabItem.IsSelected = true
Run Code Online (Sandbox Code Playgroud)
如果由于绑定更改而有任何其他地方,您将看到问题.否则,上面的代码应该工作.
小智 12
上面没有提到的一件事:
这样的事情不起作用的主要原因是标签项没有设置"名称"属性.要以编程方式导航到选项卡控件的每个选项卡项必须为其中任何上述代码设置其name属性.
<tabItem Name="tab1"></tabItem>
Run Code Online (Sandbox Code Playgroud)
小智 5
我已经实现了一个基于MVVM绑定的小解决方案,用于实用地选择选项卡面板.
在视图模型中定义属性 - 选择int类型
绑定视图中的属性
<TabControl
x:Name="TabsCandidate"
VerticalAlignment="Stretch"
TabStripPlacement="Top"
SelectedIndex="{Binding Selected}"
Run Code Online (Sandbox Code Playgroud)private int _selected;
public int Selected
{
get { return _selected; }
set
{
_selected = value;
OnPropertyChanged("Selected");
}
}
Run Code Online (Sandbox Code Playgroud)将值设置为Select属性,只需绑定即可激活选项卡面板.
如果你想从父选项卡面板中的选项卡面板导航,这个解决方案将只是工作,你需要做的就是,访问你的控件的数据上下文并设置它
// set the property value of the view model which points the index of the tab controller.
((CandidateViewModel)((System.Windows.FrameworkElement)candidateTab.Content).DataContext).Selected = CandidateLogTabIndex;
Run Code Online (Sandbox Code Playgroud)