标签: tabcontrol

如何使用WPF中的TabControl在不同选项卡上添加按钮

我有基本的标签,我希望每个标签都有一组不同的按钮,但按钮被添加到主窗口而没有标签.当我转到代码并剪切按钮并将其粘贴到我希望它的选项卡时,它只能用于1个按钮,然后对于第二个按钮,我收到一条错误消息:

"该对象TabItem已经有一个孩子,无法添加Button.TabItem只能接受一个孩子."

这是代码的样子:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="394" Width="570">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0*" />
        <ColumnDefinition Width="548*" />
    </Grid.ColumnDefinitions>
    <TabControl Margin="9,30,11,10" Name="tabControl1" Grid.Column="1" SelectionChanged="tabControl1_SelectionChanged">
        <TabItem Name="Admin" Header="Admin">

        </TabItem>
        <TabItem Name="Staff" Header="Staff" />
        <TabItem Name="Student" Header="Student" />
        <TabItem Name="Diary" Header="Diary" />
        <TabItem Name="Timetables" Header="Timetables" />
        <TabItem Name="Assignments" Header="Assignments" />
        <TabItem Name="Courses" Header="Courses" />
    </TabControl>
    <Menu Height="16" Name="menu1" VerticalAlignment="Top" Grid.Column="1" />
    <Button Grid.Column="1" Height="23" HorizontalAlignment="Left" Margin="18,64,0,0" Name="button1" VerticalAlignment="Top" Width="118">Add/Edit Student</Button>
</Grid>
Run Code Online (Sandbox Code Playgroud)

我想在"Admin"选项卡中实现"button1"

它可以工作,但是当我按下第二个按钮时它会失败

提前致谢

c# wpf tabcontrol button tabitem

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

TabPage为userControl?

我想创建tabpage作为userControl.

有没有办法解决这个问题?

c# tabcontrol winforms

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

WinForms:如何模拟图像上的按钮行为?

我有一个winforms TabControl的扩展,它在每个选项卡上绘制一个X,以允许用户关闭选项卡.

alt text http://i41.tinypic.com/bhelqp.jpg

与标准相比:

替代文字http://i42.tinypic.com/2zqa2c3.jpg

如何模拟该图像上的按钮外观?我的意思是,当用户点击时,它应该在视觉上表明.按钮使用插入图像执行此操作.对于奖励积分,我也想做悬停部分 - 鼠标悬停时图像将"亮起".

但X不是一个按钮,它不是PictureBox控件.它根本不是一种控制.它刚刚被吸引到那里.

有没有办法在MouseDp上绘制插入边框并在MouseUp上引发?对于"插入"阶段,我会更好地生成另一个图像吗?(另一个用于悬停).

有人这么做过吗?


相关:模拟Winforms按钮点击动画
但是这个问题不同,因为他实际上有一个PictureBox控件.我不.

.net tabcontrol winforms

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

在c#的tabControl中显示第一个标签页的下一个标签页

我在窗体中的tabcontrol中有两个标签A,B,我想在标签页A上点击"下一步"按钮显示标签页B,我该怎么做?

c# tabcontrol winforms

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

WPF保留Tab控件状态

我已经阅读了帖子@ 如何阻止Wpf Tabcontrol在Tab更改上卸载Visual Tree,但是我无法让它工作,我一定错过了什么.请帮忙.谢谢

我正在使用来自示例项目的类TabControlEx @ http://www.pluralsight-training.net/community/blogs/eburke/archive/2009/04/30/keeping-the-wpf-tab-control-from-destroying-its -children.aspx

<Window x:Class="MyMainwindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:sharedC="clr-namespace:myShared.Converter;assembly=myShared"
    xmlns:mainTab="clr-namespace:MyWPFLib.View" Title="{Binding Title}"        
    Height="600" Width="850" Top="223" Left="164" ResizeMode="CanResize" Closing="WindowClosing"
    WindowStyle="ToolWindow">
<Grid>
 <mainTab:TabControlEx IsSynchronizedWithCurrentItem="True"
                        Grid.Row="0"  
                        Margin="10 0 5 5"
                        x:Name="MainTabRegion"  
                        TabStripPlacement="Top" 
                        SelectedIndex="{Binding Tabs.SelectedIndex}" 
                        ItemsSource="{Binding Tabs.TabItems}"                         
                        >
                        <TabControl.ItemContainerStyle>
                            <Style TargetType="{x:Type TabItem}">
                                <Setter Property="Header">
                                    <Setter.Value>
                                        <Binding Path="Header"/>
                                    </Setter.Value>
                                </Setter>
                                <Setter Property="Visibility" 
                                Value="{Binding IsVisible, Mode=OneWay, Converter={StaticResource boolToVis}}"/>
                            </Style>
                        </TabControl.ItemContainerStyle>
                    </mainTab:TabControlEx>
</Grid>
</Window>

Datasource for the maintab is Tabs.TabItems

    public ObservableCollection<ITabControl> TabItems
    {
        get
        {
            return _items;
        }
    }
Run Code Online (Sandbox Code Playgroud)

每个TabItem都是用它构建的

<DataTemplate …
Run Code Online (Sandbox Code Playgroud)

c# wpf tabcontrol

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

绑定到WPF中的TabControl的ItemsSource

当谈到我目前在WPF中的绑定需求时,我处于绑定状态(没有双关语).我花了大部分时间试图研究我的问题,我找不到解决问题的可靠方法.这里是:

我正在尝试创建一个用户控件来表示我所称的工作空间(Josh Smith的博客参考).工作区将显示在选项卡控件中.我的目标是使用选项卡式界面来管理我打开的各种文档,就像在一本激动人心的工作簿的浏览器中一样.

每次用户使用新工作区时,该工作区都应显示在选项卡控件中.每个工作空间采用用户控件的形式,每个工作空间都有自己的视图模型.我希望Tab Header能够从我的视图模型中显示一个属性,我认为它可能必须通过我的用户控件作为属性公开.

到目前为止,在我遇到很多问题之前,我最喜欢的最干净的解决方案是使用datatemplates.基本上我做了以下事情:

<DataTemplate x:Key="WorkspaceItem">
            <DockPanel Width="120">
                <ContentPresenter 
                    Content="{Binding Title}" 
                    VerticalAlignment="Center" 
                    />
            </DockPanel>
        </DataTemplate>     

<DataTemplate DataType="{x:Type CustomerViewModel}">
   <workspace:CustomerWorkspace />
</DataTemplate>

<TabControl ItemsSource="{Binding Workspaces}"
            ItemTemplate="{StaticResource WorkspaceItem}"/>
Run Code Online (Sandbox Code Playgroud)

TabControl.ItemsSource绑定到包含所有工作空间的observablecollection(Object).

这项工作很有效,除了两件事:

  1. 如果我打开多个客户,那么我打开了多个工作区.由于DataTemplate Recycling,当我从一个选项卡切换到另一个选项卡时,我会丢失状态.所以没有约束的一切都会失去状态.

  2. 不同工作区(使用不同的数据模板)之间交换的性能非常慢.

所以...我在SO上找到了另一个用户的建议,将用户控件添加到ObservableCOllection并丢弃数据模板.现在解决了失去国家的问题之一.但是,现在我面临着剩下的两个问题:

  1. 如何在不使用DataTemplate的情况下设置TabItem.Header属性
  2. 除非它们是相同的DataTemplate,否则在选项卡之间来回交换的速度仍然很慢.

然后,我继续在我的代码隐藏中向ObservableCollection添加一个TabItem,并将TabItem.Content属性设置为用户控件的属性.由于我已经删除了DataTemplates的使用,速度问题现在已经消除,因为失败状态问题.但是,我现在遇到了将TabItem.header绑定到我的usercontrol的Custome"Title"属性的问题,该属性应该显示在Tab Header中.

在这篇非常长的帖子之后,我的问题是:

  1. 有没有办法使用datatemplates并强制它们为集合中的每个项目创建一个新实例,以防止回收和状态丢失.

    1A.有没有比我在上面的帖子中提到的更好的选择?

  2. 有没有办法通过Xaml而不是通过Tab项的后端代码构造来完成所有这些?

wpf binding tabcontrol datatemplate tabitem

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

如何让孩子控制?

我有TabControl包含4个子标签.

在此输入图像描述

每个选项卡都包含图片框cotrol.

我需要获得所选Tab Control的图片框控件.

知道如何实现它吗?

c# controls tabcontrol winforms

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

如何以编程方式设置Tab键的键?

如何为标签页设置密钥

我有一个tabcontrol1,我在其中以编程方式添加tabpage.

TabPage tabpagep1=new TabPage("");
tabpagep1.Name = "tp1";
tabpage1.text="netabpage1"
tabcontrol1.TabPages.Add(tabpagep1);
Run Code Online (Sandbox Code Playgroud)

如何设置tabpage1的KEY?

c# tabcontrol tabpage winforms

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

如何制作透明的tabPage?

如何制作透明的tabPage?我找到了解决方案,例如将Form的设置BackColorTransparencyKey颜色设置为Color.LimeGreenOnPaintBackground使用空方法覆盖,但TabPage既没有TransparencyKey property norOnPaintBackground`方法.我怎样才能做到这一点?

c# tabcontrol transparent tabpage winforms

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

使用Prism - WPF关闭动态添加的Tab项

我正在使用Prism RegionManager,用一个TabControl区域注册不同的视图MainView.

MainView.xaml

    <TabControl regions:RegionManager.RegionName="MainViewTabRegion">
        <TabControl.ItemTemplate>
            <DataTemplate>
                <DockPanel Width="Auto">
                    <Button Command="{Binding DataContext.DataContext.CloseTabCommand, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}"
                            CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}"
                            Content="X"
                            Cursor="Hand"
                            DockPanel.Dock="Right"
                            Focusable="False"
                            FontFamily="Courier"
                            FontWeight="Bold"
                            Margin="4,0,0,0"
                            FontSize="10"
                            VerticalContentAlignment="Center"
                            Width="15" Height="15" />

                            <ContentPresenter Content="{Binding DataContext.DataContext.HeaderText, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" />
                 </DockPanel>
             </DataTemplate>
        </TabControl.ItemTemplate>
    </TabControl>
Run Code Online (Sandbox Code Playgroud)

在MainViewViewModel中,我使用相同的基类添加不同的视图.

MainViewViewModel.cs:

private void AddProjectView() {
     var view = _container.Resolve<ProjectSettingsView>();
     var dataContext = _container.Resolve<ProjectSettingsViewModel>();
     dataContext.HeaderText = "test header txt";
     view.DataContext = dataContext;
     _regionManager.RegisterViewWithRegion("MainViewTabRegion", () => view);
}
Run Code Online (Sandbox Code Playgroud)

我可以在视图中添加新的标签项.

我怎样才能关闭标签项目中,<TabControl.ItemTemplate>在上面的XAML代码,添加了一个关闭按钮与CloseCommand中 …

c# wpf tabcontrol prism mvvm

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

标签 统计

tabcontrol ×10

c# ×8

winforms ×6

wpf ×4

tabitem ×2

tabpage ×2

.net ×1

binding ×1

button ×1

controls ×1

datatemplate ×1

mvvm ×1

prism ×1

transparent ×1