我有基本的标签,我希望每个标签都有一组不同的按钮,但按钮被添加到主窗口而没有标签.当我转到代码并剪切按钮并将其粘贴到我希望它的选项卡时,它只能用于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"
它可以工作,但是当我按下第二个按钮时它会失败
提前致谢
我想创建tabpage作为userControl.
有没有办法解决这个问题?
我有一个winforms TabControl的扩展,它在每个选项卡上绘制一个X,以允许用户关闭选项卡.
alt text http://i41.tinypic.com/bhelqp.jpg
与标准相比:
替代文字http://i42.tinypic.com/2zqa2c3.jpg
如何模拟该图像上的按钮外观?我的意思是,当用户点击时,它应该在视觉上表明.按钮使用插入图像执行此操作.对于奖励积分,我也想做悬停部分 - 鼠标悬停时图像将"亮起".
但X不是一个按钮,它不是PictureBox控件.它根本不是一种控制.它刚刚被吸引到那里.
有没有办法在MouseDp上绘制插入边框并在MouseUp上引发?对于"插入"阶段,我会更好地生成另一个图像吗?(另一个用于悬停).
有人这么做过吗?
相关:模拟Winforms按钮点击动画
但是这个问题不同,因为他实际上有一个PictureBox控件.我不.
我在窗体中的tabcontrol中有两个标签A,B,我想在标签页A上点击"下一步"按钮显示标签页B,我该怎么做?
我已经阅读了帖子@ 如何阻止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) 当谈到我目前在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).
这项工作很有效,除了两件事:
如果我打开多个客户,那么我打开了多个工作区.由于DataTemplate Recycling,当我从一个选项卡切换到另一个选项卡时,我会丢失状态.所以没有约束的一切都会失去状态.
不同工作区(使用不同的数据模板)之间交换的性能非常慢.
所以...我在SO上找到了另一个用户的建议,将用户控件添加到ObservableCOllection并丢弃数据模板.现在解决了失去国家的问题之一.但是,现在我面临着剩下的两个问题:
然后,我继续在我的代码隐藏中向ObservableCollection添加一个TabItem,并将TabItem.Content属性设置为用户控件的属性.由于我已经删除了DataTemplates的使用,速度问题现在已经消除,因为失败状态问题.但是,我现在遇到了将TabItem.header绑定到我的usercontrol的Custome"Title"属性的问题,该属性应该显示在Tab Header中.
在这篇非常长的帖子之后,我的问题是:
有没有办法使用datatemplates并强制它们为集合中的每个项目创建一个新实例,以防止回收和状态丢失.
1A.有没有比我在上面的帖子中提到的更好的选择?
有没有办法通过Xaml而不是通过Tab项的后端代码构造来完成所有这些?
我有TabControl包含4个子标签.

每个选项卡都包含图片框cotrol.
我需要获得所选Tab Control的图片框控件.
知道如何实现它吗?
如何为标签页设置密钥
我有一个tabcontrol1,我在其中以编程方式添加tabpage.
TabPage tabpagep1=new TabPage("");
tabpagep1.Name = "tp1";
tabpage1.text="netabpage1"
tabcontrol1.TabPages.Add(tabpagep1);
Run Code Online (Sandbox Code Playgroud)
如何设置tabpage1的KEY?
如何制作透明的tabPage?我找到了解决方案,例如将Form的设置BackColor和TransparencyKey颜色设置为Color.LimeGreen或OnPaintBackground使用空方法覆盖,但TabPage既没有TransparencyKey property norOnPaintBackground`方法.我怎样才能做到这一点?
我正在使用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中 …
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