我正在尝试在WPF中创建一个选项卡控件,其中选项卡位于控件的右侧,文本旋转90度.外观类似于您可以在笔记本中购买和使用的塑料选项卡.我已经尝试将TabStripPlacement更改为Right,但它只是将选项卡堆叠在控件的右上方 - 根本不是我想到的.
是否有人可以告诉我如何在C#中使用tabControl在每个选项卡中添加关闭按钮?我计划使用按钮图片替换我的标签中的[x] ..
谢谢
我正在尝试构建一个包含TabControl和TextBlock的WPF用户界面.
我想将这两个控件绑定到以下类的底层实例集合:
class PageModel
{
public string Title {get;set;}
public string TabCaption {get;set;}
public FrameworkElement TabContent {get;set}
}
Run Code Online (Sandbox Code Playgroud)
选项卡控件应显示每个PageModel的选项卡.
TextBlock应显示当前所选选项卡的标题.
我怎样才能达到这个效果?
将TabControl的项绑定到ObservableCollection的最简单示例是什么?
每个标签的内容都有唯一的数据,实际上这些数据会将自己的observableCollections绑定到items组件.
目前我有一个用户控件,我想在创建后立即将其设置为每个选项卡的内容.我还需要在创建选项卡时动态设置此新用户控件的datacontext.所以,基本上,我希望tabcontrol的observablecollection包含映射到每个选项卡中的数据的模型视图.
最重要的是,我需要在不违反WPF中的MVVM的情况下完成所有这些操作!有帮助吗?
非常感激!
问候,
我有一个标签控件,我希望其中一个标签在事件中更改了文本颜色.我找到了像C# - TabPage Color事件 和C#Winform这样的答案:如何设置TabControl的基色(不是标签页), 但使用这些设置所有颜色而不是一个.
所以我希望有一种方法可以通过我想改变的方法来实现这个方法而不是事件?
就像是:
public void SetTabPageHeaderColor(TabPage page, Color color)
{
//Text Here
}
Run Code Online (Sandbox Code Playgroud) 我有一个TabControl我在VS2005设计器中设计的,有大约7个标签.
如何轻松切换标签的顺序?
我最后把一个标签放在一边,但是现在我想把它放在中间的某个地方.
我正在使用TabControlWPF中的类,我注意到每个内容的TabItem所有边都有4像素的默认边距.
示例代码:
<Window x:Class="TabControlPadding.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<TabControl Margin="10">
<TabItem Header="Tab 1">
<Grid Background="Pink"/>
</TabItem>
<TabItem Header="Tab 2">
<Grid Background="LightBlue"/>
</TabItem>
</TabControl>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
截图:

我想摆脱这个边际(将其减少到零),但我宁愿不必完全替换模板或类似的任何重量.
有一种简单的方法可以以非常有针对性的方式做到这一点吗?
我可以将数据导入到我的TabControl中,但是标题周围有框架,我无法从标签到标签.
我在TabControl上使用XAML绑定语法做错了什么?
XAML:
<StackPanel>
<TabControl x:Name="TheTabControl">
<TabControl.ItemTemplate>
<DataTemplate>
<TabItem Header="{Binding LastName}">
<StackPanel Margin="10" Orientation="Horizontal">
<TextBlock Text="{Binding FirstName}"/>
<TextBlock Text=" "/>
<TextBlock Text="{Binding LastName}"/>
</StackPanel>
</TabItem>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
<TabControl>
<TabItem Header="Tab1">
<TextBlock Text="This is a test of tab 1"/>
</TabItem>
<TabItem Header="Tab2">
<TextBlock Text="This is a test of tab 2"/>
</TabItem>
</TabControl>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
代码背后:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
//create all
List<Customer> customers = new List<Customer>();
customers.Add(new Customer { FirstName = "Jim", LastName = …Run Code Online (Sandbox Code Playgroud) 如何将TabItem.Header设置为从少数字段获取的绑定,每个绑定以不同的大小显示,全部代替原始标题文本; 没有覆盖标题的默认样式和行为 - 我只需要文本.
我试图设置它的模板但是它创建了一个包含内部控件的矩形,这个矩形对用户点击没有响应,并且还有控件样式,我希望这个控件不可见,只有它的文本应该是可见的.
我尝试过以下方法:
<TabControl ItemsSource="{Binding}">
<TabControl.ItemTemplate>
<DataTemplate>
<TabItem>
<TabItem.Header>
<MultiBinding StringFormat="{}{0}-{1}">
<Binding Path="Title"/>
<Binding Path="Category.Title"/>
</MultiBinding>
</TabItem.Header>
<TabItem.Content>
<TextBlock>
Here is what is gonna be in the TabItem - not header
</TextBlock>
</TabItem.Content>
</TabItem>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
Run Code Online (Sandbox Code Playgroud)
但它没有显示任何东西.
我也尝试将HeaderTemplate设置为DataTemplate,但是会发生的是,DataTemplate会覆盖TabItem样式,当我单击文本时它不会转到单击的选项卡,此外,未选中的选项卡看起来很有趣,我看到了文本的矩形浮动,而我希望它是透明的.
因此,总结一下我的问题,我想将TabItem.Header.Text设置为带有StringFormat的MultiBinding.
在我的选项卡SelectionChanged事件中(这是正确的事件,我找不到选项卡更改事件?),如何访问新选项卡?
此外,在正常代码的此事件之外,如何访问当前选定的选项卡?
TabControl.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(TabControl_SelectionChanged);
void TabControl_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
//How so access my currently selected tab???
}
Run Code Online (Sandbox Code Playgroud) tabcontrol ×10
wpf ×7
c# ×4
data-binding ×3
winforms ×3
header ×2
tabitem ×2
.net ×1
binding ×1
colors ×1
margin ×1
mvvm ×1
selecteditem ×1
xaml ×1