使用xaml(wpf)我试图摆脱下面"插图A"中显示的选项卡控件下的行,使其最终看起来像"插图B":
插图A.
http://www.arulerforwindows.com/images/peskylinea.png
图B
http://www.arulerforwindows.com/images/peskylineb.png
当我定义选项卡项但显示附加到选项卡控件时,该行显示,因此更改选项卡项或选项卡控件之一或两者上的BorderThickness似乎不会产生所需的结果.
我需要在透明背景上执行此操作,其中不能使用实心填充矩形来掩盖问题.
这是代码:
<!--Tab Control-->
<Style TargetType="{x:Type TabControl}">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabControl}">
<Grid KeyboardNavigation.TabNavigation="Local">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TabPanel Name="HeaderPanel" Grid.Row="0" Panel.ZIndex="1" Margin="0,0,0,-1" IsItemsHost="True" KeyboardNavigation.TabIndex="1" Background="Transparent" />
<Border
Name="Border"
Grid.Row="1"
Background="{StaticResource WindowBackgroundBrush}"
BorderBrush="{StaticResource DefaultSystemBrush}"
BorderThickness="1,1,1,1"
Margin="0,0,0,0"
CornerRadius="4"
KeyboardNavigation.TabNavigation="Local"
KeyboardNavigation.DirectionalNavigation="Contained"
KeyboardNavigation.TabIndex="2" >
<ContentPresenter
Name="PART_SelectedContentHost"
Margin="4"
ContentSource="SelectedContent" />
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}" />
<Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource DisabledBorderBrush}" /> …Run Code Online (Sandbox Code Playgroud) WPF Tabcontrol的默认行为是将Tab Headers放在彼此相邻的位置,中间没有任何空白区域.如果我想在标题之间指定间隙怎么办?我是否必须为此定义控件模板?我对世界粮食计划署比较陌生,对此我们表示感谢.
谢谢
我有一个WPF TabControl,我想的标签,用一个定位TabStripPlacement的Top,但我希望他们能在上面一个正确的方向显示.我已经做了实现,很容易FlowDirection的RightToLeft; 但是,我不希望子控件继承RightToLeft FlowDirection.
有没有办法在不使用FlowDirection属性的情况下将标签放在右侧顶部?
我正在寻找一种在一组标签之前实现一种插入标题的方法,如下所示:

标签集不应该是多行的,只是水平的并且在顶部布局.但是,当选项卡太多时,它应该可以正确滚动.
我担心在使用第三方控件时我会受到限制,但我可以在标准TTabControl上使用子类来为标准外观和行为添加必要的更改.(我不需要它是TPageControl,因为它只是我感兴趣的选项卡的特定排列.)
也许有一些方法可以通过巧妙安排的标准控制组合实现这一点,尽管我的努力,但它已经逃过了我.
基本上,任何想法或指针都是受欢迎的.
哦,还有其他要求,它应该与桌面主题完美融合.
要清除我的文本框,我在表单中使用以下代码:
foreach (Control c in this.Controls)
{
if (c is TextBox || c is RichTextBox)
{
c.Text = "";
}
}
Run Code Online (Sandbox Code Playgroud)
但现在我的文本框位于TabControl中.如何对文本框运行相同类型的检查,如果控件是文本框,则将值设置为"".我已经尝试过使用:
foreach(Control c in tabControl1.Controls)
Run Code Online (Sandbox Code Playgroud)
但这没效果.
我在互联网上搜索了这个,但我找不到如何用C#做到这一点
我想要做的是,当我点击我的NewTab按钮时,会出现一个新选项卡,其中包含第一个选项卡上的相同控件.我看到了一些关于如何向UserControl表单添加内容的信息,但C#没有这样的内容.
对于每个会说"发布你的代码"的人,我都没有,所以不要说这个,我唯一的代码是程序的代码,这对任何人都无济于事.
我有一个与TabControl我绑定的习惯.TabPagesContextMenu
我希望菜单只在单击页面标题时显示.
我所做的是,当TabControl点击它时,我检查这些条件:
private void MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == Mousebuttons.Right)
{
for (int i = 0; i < TabCount; ++i)
{
Rectangle r = GetTabRect(i);
if (r.Contains(e.Location) /* && it is the header that was clicked*/)
{
// Change slected index, get the page, create contextual menu
ContextMenu cm = new ContextMenu();
// Add several items to menu
page.ContextMenu = cm;
page.ContextMenu.Show(this, e.Location);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我绑定MouseUp了 …
这些是我的类:
class mainViewModel
{
public List<Foo> F { get; set; }
public mainViewModel()
{
F=new List<Foo>()
{
new Foo(new Animal(){Name = "Cat"}),
new Foo(new Animal(){Name = "Dog"}),
new Foo(new Animal(){Name = "Camel"})
};
}
}
public class Foo
{
public Animal Animal { get; set; }
public Foo(Animal animal)
{
Animal = animal;
}
}
public class Animal
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的MainWindow Xaml代码:
<TabControl ItemsSource="{Binding Path=F}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Animal.Name}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate> …Run Code Online (Sandbox Code Playgroud) 我正在使用For Each循环:
For Each tab As TabPage in TabControl1.TabPages
Run Code Online (Sandbox Code Playgroud)
我无法检索选项卡的索引.有没有办法做到这一点?我试图查看索引是低于还是高于当前指数.
我正在尝试TabItem在设计视图中向另一个添加控件,但我只能看到第一个TabItem带有我之前添加的所有控件,目前我只能通过代码视图窗口上的硬编码添加控件,因此我必须编译程序,以便查看硬编码添加的控件的结果.
任何帮助,将不胜感激.