标签: tabcontrol

WinForms隐藏TabControl标题

我需要一些方法来隐藏TabControl的标题(我将以编程方式切换选定的选项卡).我怎样才能做到这一点?

tabcontrol winforms

12
推荐指数
2
解决办法
1万
查看次数

对齐wpf tabcontrol strip

我正试图在右边对齐一个tabcontrol条.

只是要清楚 - 我希望顶部的标签(tabstripplacement),但在右侧对齐.

c# wpf xaml tabcontrol

11
推荐指数
1
解决办法
6041
查看次数

选定的TabItem中的图像不清晰

我有一个TabControl.每个TabItem的标题包含一个带有图标和Label的StackPanel.

<TabControl>
  <TabItem>
    <TabItem.Header>
      <StackPanel Orientation="Horizontal">
        <Image Source="/LoginPanel;component/Icons/icoLogin.ico"</Image>
        <Label VerticalContentAlignment="Center">Login</Label>
        </StackPanel>
      </TabItem.Header>
    </TabItem.Header>
    <!--some further code here-->
  <TabItem>
  <!--some further code here-->
<TabControl>
Run Code Online (Sandbox Code Playgroud)

每个未选择的TabItem中的每个图标都按预期显示.当前所选TabItem中的图标有些混浊.如果我切换到另一个标签,取消选择的标签图标变得清晰; 新选择的图标变为阴天.

我已经尝试过以下方法来解决这个问题:

SnapsToDevicePixels="True"
Run Code Online (Sandbox Code Playgroud)

但没有任何反应

要么

Width="32" Height="32"
Run Code Online (Sandbox Code Playgroud)

要么

Stretch="None"
Run Code Online (Sandbox Code Playgroud)

防止缩放.所有这些都没有任何影响.有人可以给我一个提示吗?提前致谢

wpf icons tabcontrol ico tabitem

11
推荐指数
2
解决办法
1254
查看次数

11
推荐指数
2
解决办法
3万
查看次数

什么是Control.IsHandleCreated需要?

我正在检查TabControl的内置.net控件的来源,我看到它在决定是否向集合添加或插入TabPage之前引用此属性.

if (this.owner.IsHandleCreated)
{
    this.owner.AddTabPage(tabPage, tabPage.GetTCITEM());
}
else
{
    this.owner.Insert(this.owner.TabCount, tabPage);
}
Run Code Online (Sandbox Code Playgroud)

这两个函数最终实现了相同的目标 - 它们将TabPage添加到内部"TabPages"集合的末尾......但我只是不明白为什么它应该与您使用的函数有关.

this指的ControlCollection是覆盖内置的Control.ControlCollection.owner是使用的TabControl ControlCollection.

c# tabcontrol winforms

11
推荐指数
1
解决办法
5520
查看次数

带关闭和添加按钮的TabControl

我想让一个标签控件有一个"x"(关闭按钮)和"+"(新标签按钮).我找到了一个添加a的解决方案x button,标签现在看起来像这样:

在此输入图像描述

但我想+现在添加一个黑色圆圈的位置.我不知道如何,我尝试绘制Paint最后一个标签的事件,如下所示:

var p = tabs.TabPages[tabs.TabCount - 1];
p.Paint += new PaintEventHandler(tab_OnDrawPage);

private void tab_OnDrawPage(object sender, PaintEventArgs e)
{
    // e.ClipRectangle.
    e.Graphics.DrawString("+", 
                          new Font("verdana", 
                                   10, 
                                   FontStyle.Bold), 
                          Brushes.Black, 
                          e.ClipRectangle.X + 10, 
                          e.ClipRectangle.Y + 10);
}
Run Code Online (Sandbox Code Playgroud)

但它并没有显示任何吸引力.我想这与我传递给他们的位置有关DrawString(),但我不知道要使用的正确位置.我使用+10将它从最后一个标签中拉出来.如何解决?我自己没有做任何自定义绘图,我正在学习它.

.net c# tabcontrol custom-controls winforms

11
推荐指数
1
解决办法
7639
查看次数

是否可以在WPF TabControl中左对齐标题?

现在,我有一个WPF窗口,如下所示:

TabControl的所有选项卡标签都位于中心位置http://img33.yfrog.com/img33/9996/tabcontrolcenteredheade.jpg

我希望它看起来像这样(Photoshop doctored图像):

TabControl的所有选项卡标签都是左对齐的http://img42.yfrog.com/img42/6687/tabcontrolleftalignedhe.jpg

这可能没有完全重做TabControl吗?

我试图搞乱TabControl,ControlTemplate等等,但没有我尝试了预期的效果.


编辑:

如果我尝试这个解决方案(由T Levesque提供)......

<TabControl...>
    <TabControl.ItemContainerStyle>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="HorizontalAlignment" Value="Left"/>
        </Style>
    </TabControl.ItemContainerStyle>
    ...
</TabControl>
Run Code Online (Sandbox Code Playgroud)

......我明白了:

TabControl的所有选项卡标签都是左对齐的,但选项卡不能正确伸展http://img14.imageshack.us/img14/6687/tabcontrolleftalignedhe.jpg

哪个很接近,但最终看起来有点像直方图.


编辑2:

为了记录,我最终结合R. Copsey和T. Levesque的答案来达到这个目的:

<TabControl...>
    <TabControl.ItemContainerStyle>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="HorizontalAlignment" Value="Left"/>
        </Style>
    </TabControl.ItemContainerStyle>
    ...
</TabControl>
Run Code Online (Sandbox Code Playgroud)

wpf xaml tabcontrol alignment

10
推荐指数
1
解决办法
9437
查看次数

TabControl的TabItems共享相同的内容......不想要

以下示例xaml使每个选项卡项共享相同的TextBox.这是有道理的,在某种程度上我猜...但它是意想不到的行为,几乎感觉就像一个bug.我在文档中找不到任何解释行为的信息,或者如何正确解决这个问题.

<TabControl>
    <TabControl.Resources>
        <Style TargetType="TabItem">
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBox />
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </TabControl.Resources>
    <TabItem Name="tab1" />
    <TabItem Name="tab2" />
</TabControl>
Run Code Online (Sandbox Code Playgroud)

当在tab1和tab2之间切换时,使用相同的TextBox,当我期望每个选项卡有一个新的TextBox时.我怎样才能得到后一种情况?

对TabItem进行子类化并将其内容默认设置为TextBox是一种方法,但我只是想确保没有我遗漏的东西.

编辑

我意识到为每个选项卡显式设置内容将解决问题,但选项卡将动态创建.我想使用内容模板,以便我可以通过数据绑定添加新选项卡,并使内容不共享,因为它会导致奇怪的行为.

也许使用TabControl的当前实现,没有声明方法来解决这个问题.在代码中设置内容非常简单,但在WPF中这样的事情总是感觉不对.对我来说,这似乎是TabControl的不合理优化; 对于不实用的情况,它至少应该是可选的.

wpf tabcontrol

10
推荐指数
1
解决办法
7881
查看次数

WPF中TabControl的TabChanged事件

我在WPF中有一个TabControl.我想找到更改标签时发生的事件.这个活动的名字是什么?

.net c# wpf events tabcontrol

10
推荐指数
1
解决办法
3万
查看次数

通过绑定启用TabItem

我想在不同页面是TabItems的应用程序中使用MVVM.

为此,我使用了一个可观察的视图模型(Items)集合,并将其绑定到tabcontrols ItemSource.

对于每个视图模型,我创建了一个单独的数据模板来呈现正确的视图,如下所示:

<DataTemplate DataType="{x:Type baseVm:AViewModel}">
  <baseVw:AView /> 
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

要在选项卡的标题中显示正确的名称,我创建了另一个数据模板,以应用于每个选项卡控件的元素:

<DataTemplate x:Key="ViewModelTabTemplate">
  <DockPanel>
    <ContentPresenter Content="{Binding Path=Name}"/>
  </DockPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

选项卡控件如下所示:

<TabControl x:Name="myTabControl" 
            ItemsSource="{Binding Items}" 
            ItemTemplate="{DynamicResource ViewModelTabTemplate}">
</TabControl>
Run Code Online (Sandbox Code Playgroud)

我现在要做的是在包含集合的视图模型中启用/禁用选项卡.视图模型的基类包含一个依赖项属性IsEnabled,我想将它绑定到视图.如果我直接在视图中这样做:

IsEnabled="{Binding IsEnabled, FallbackValue=true}"
Run Code Online (Sandbox Code Playgroud)

当我将IsEnabled属性设置为false时,标签页的内容被禁用.但我真正想要的是也禁用tabpage的标签而不仅仅是内容.

谢谢你的帮助!

wpf binding tabcontrol datatemplate mvvm

10
推荐指数
1
解决办法
4747
查看次数

标签 统计

tabcontrol ×10

wpf ×6

c# ×5

winforms ×4

.net ×2

xaml ×2

alignment ×1

binding ×1

custom-controls ×1

datatemplate ×1

events ×1

ico ×1

icons ×1

mvvm ×1

tabitem ×1