在WPF中,当选定的TabItem发生更改时,是否有一种简单的方法可以阻止TabControl中的TabItems重新定位?因此,单击TabItem只会显示其内容,但不会像往常那样重新定位TabItem(通过将选定的TabItem移动到选项卡的最下面一行,如果它不存在).
编辑:为了澄清,我确实希望选项卡显示在多行中,我只是不希望在选择除底行之外的行的TabItem时重新定位选项卡标题.我希望标题集合保持完全静态,但是当单击标题时仍然会显示该TabItem的内容.
谢谢!
我试图在下面的代码中找出tmpTabPages的生命周期.让我们假设表单有一个名为MyTabControl的空TabControl,它有一个名为NameCollection的字符串集合.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each itm In NameCollection
Dim tmpTabPage as New TabPage(itm.toString)
'Add Controls to tmpTabPage
MyTabControl.TabPages.Add(tmpTabPage)
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
由于tmpTabPage的范围是For/Next块,通常它的生命周期是直到块的结尾对吗?但是因为它被添加到具有块之外的范围的集合中它是否与集合具有相同的生命周期,或者在这种情况下是MyTabControl?最后,如果我调用MyTabControl.TabPages.Clear,集合中的tmpTabPages会被破坏还是只会坐在那里占用内存?
我有一个数据绑定选项卡控件:
<TabControl ItemsSource="{Binding Products}" Name="ProductsTabControl">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
Run Code Online (Sandbox Code Playgroud)
此控件显示每个产品一个选项卡,但我想使已停产产品的选项卡半透明(即将其不透明度设置为0.2).如何在自动生成项目时更改tabitem的opacity属性.我知道我可以用一种风格来改变它们,但我只想改变那些已停产的风格.
我真的只想要一个TabControl,它具有可以关闭的自定义TabItems,基于此处的代码.
我认为这个问题与我的问题相同,但下面的代码和xaml的组合留下了空白标签.
public class ClosableTabControl : TabControl
{
protected override DependencyObject GetContainerForItemOverride()
{
return new ClosableTabItem();
}
}
<uc:ClosableTabControl x:Name="Items" Grid.Column="1">
<uc:ClosableTabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding DisplayName}" />
</DataTemplate>
</uc:ClosableTabControl.ItemTemplate>
<uc:ClosableTabControl.ContentTemplate>
<DataTemplate>
<ContentControl>
<local:EmpView DataContext="{Binding ., Mode=TwoWay}"/>
</ContentControl>
</DataTemplate>
</uc:ClosableTabControl.ContentTemplate>
</uc:ClosableTabControl>
Run Code Online (Sandbox Code Playgroud)
xaml适用于TabControl(而不是uc:ClosableTabControl).
使用具有ClosableTabItems的TabControl的最佳方法是什么?
干杯,
Berryl
ps我会发布ClosableTabItem的代码,但我想在第一篇文章中保持噪音水平.如果有帮助,请让我发布它.
我有3个标签项要实现.程序执行时,我希望用户只能看到tab1并隐藏选项卡2和选项卡3.
程序执行时会发生类似这样的事情:
public Window1()
{
InitializeComponent();
// I need tabs 2 and 3 to be hidden
}
Run Code Online (Sandbox Code Playgroud)
然后我在选项卡1中有一个按钮.当用户单击此按钮时,选项卡2显示但仍隐藏选项卡3
private void Button1_Click(object sender, RoutedEventArgs e)
{
tabcontrol1.SelectedIndex = 1;
//need some code to show tab 2
}
Run Code Online (Sandbox Code Playgroud)
我在选项卡2中有一个按钮来显示选项卡3,然后所有选项卡都可见
private void Button2_Click(object sender, RoutedEventArgs e)
{
tabcontrol1.SelectedIndex = 2;
// need some code to show tab 3
}
Run Code Online (Sandbox Code Playgroud)
我的XAML代码:
<TabControl Name="Tabcontrol1" Margin=" 5" SelectedIndex="0">
<TabItem Header="Directories">
<Grid Width="1185" Height="945" Background="White" >
<Label Height="28" HorizontalAlignment="Right"
Margin="0,0,25,0" Name="label11" VerticalAlignment="Top"
Width="120">Step 1 of 2</Label>
</Grid …Run Code Online (Sandbox Code Playgroud) 我有一个TabControl,我在其中添加/删除了几个TabPages.
当我添加足够的页面以便必须显示导航按钮时,我会出现闪烁问题.
当导航按钮(左向右导航2个箭头)未显示时,我根本没有闪烁.闪烁与要添加的表单或页面的大小调整无关.
我试过了:
编辑:在我的主WinForm中,我添加了此代码,以防止在调整窗口大小时出现渲染错误:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;
}
}
Run Code Online (Sandbox Code Playgroud)
删除后,我的TabControl中不再出现闪烁现象.似乎我将不得不忍受调整大小渲染错误,因为持续闪烁更方便.
所有,
我已经在这里广泛搜索了解决方案,但我感觉我的问题源于对WPF的基本缺乏知识.我是新手,并且迄今为止已经黑了,并且尽我所能用Google搜索.
基本上,我有一个Ribbon与TabControl动态交互.功能区选项卡选择项目类别,RibbonGroups中的MenuItems然后选择类别中的项目.单击项目后,TabControl上的选项卡需要动态更改.无论是标题,标签本身,还是整个TabControl都可以.到目前为止,在单击一个RibbonGroups内部的MenuItem时,我尝试只为TabControl上的每个选项卡设置Header文本等于"blah".然后Header对象抛出一个空指针.无论我是设置Header,Tabs还是TabControl本身,都会发生这种情况.
为什么?!?!?!?
......以及如何在世界上修复它?
谢谢!
好的,所以我有一个使用WinForms在Visual Studio 2013 C#中编写的应用程序.在应用程序将是3个按钮.
Add Tab Type A
Add Tab Type B
Add Tab Type C
Run Code Online (Sandbox Code Playgroud)
在这3个按钮下面将是一个空的TabControl.当有人点击上述3个按钮之一时,我需要程序使用预定义的布局向TabControl添加新的Tab.3个按钮中的每个按钮都将生成一个新选项卡,其中包含与其他2个按钮不同的布局.
WinForms似乎没有内置的方法来做到这一点.有没有人有任何想法?
我的TabControl页面中有一个RichTextBox。请注意,RichTextBox是通过以下代码以编程方式制作的:
TabPage addedTabPage = new TabPage("Tab Page");
tabControl.TabPages.Add(addedTabPage);
RichTextBox addedRichTextBox = new RichTextBox()
{
Parent = addedTabPage,
Dock = DockStyle.Fill,
/* ... */
};
Run Code Online (Sandbox Code Playgroud)
此外,在每种方法的开头,我都使用以下代码来访问RichTextBox:
RichTextBox programTextBox =
(RichTextBox)tabControl.TabPages[tabControl.SelectedIndex].Controls[0];
Run Code Online (Sandbox Code Playgroud)
程序中的所有内容似乎都可以正常运行,但我注意到Text_Changed事件从未触发过。为什么会发生这种情况,以及如何使此事件触发(最好像在简单的RichTextBox中那样由其自身触发)。
tabcontrol ×10
wpf ×6
c# ×5
winforms ×3
tabitem ×2
collections ×1
data-binding ×1
flicker ×1
lifetime ×1
ribbon ×1
richtextbox ×1
silverlight ×1
vb.net ×1
xaml ×1