有没有人对C#中实现的自定义tabcontrol有任何建议,并遵守这些标准:
如果解决方案已经存在,我宁愿不弄脏所有人.
如何将WPF表单添加到选项卡控件的选项卡项中?
就像我已经制作了wpf格式一样,我需要添加选项卡控件集合,就像我们在VS 2010中打开wpf表单一样,它以Tab MDI格式打开,不同的表单显示在不同的选项卡中.
谢谢
我有一个标签,当我从一个选项卡切换到另一个选项卡时,我需要将它放在我的 TabControl 之上。我曾尝试在选项卡控件的 SelectedIndexChanged 事件中调用标签的 BrintToFront 方法,但这没有效果。我也只是尝试在设计视图中右键单击我的标签并选择“置于前面”,但同样,这没有效果。
当我切换到我的第二个选项卡时,它落在 TabControl 后面,但是当我回到我的第一个选项卡时,它又回到了前面。
我将标签本身放在 Form 而不是 TabControl 上。
我在 C# 中工作。任何想法将不胜感激。谢谢。
我的表单中有一个 tabcontrol,我需要使用 keyup 事件来管理一些东西。
当我按向左或向右按钮时,标签页会发生变化,我希望禁用 tabcontrol 键盘导航。
有可能做到这一点吗?
如果我有一个名为GuiObject的类,那个类有一个名为GuiObjects的GuiObjects列表:"GuiObjects".
现在说我的窗口有一个GuiObjects列表,我在.xaml文件中使用dataBind到:
<StackPanel>
<ItemsControl ItemsSource="{Binding TopObjectList}" DataTemplateSelector="{DynamicResource templateSelector"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
我可以为我想要生成的每种类型的FrameworkElement创建一个datatemplate,但是我遇到了TabControl的问题.我可以为tabControl创建一个datatemplate,如下所示:
<DataTemplate x:key="TabControlTemplate" DataTemplateSelector="{DynamicResource templateSelector" >
<TabControl ItemsSource="{Binding GuiObjects}" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
结果是一个选项卡控件,其中包含每个正确的页面,但没有单个TabItems的内容.很公平,我只会为TabItems制作一个DataTemplate.对于每个TabItem,我想将GuiObjects的内容放入stackpanel.
<DataTemplate x:key="TabItemTemplate" DataTemplateSelector="{Resource templateSelector">
<TabItem Header = {Binding Title}>
<StackPanel>
<ItemsControl ItemsSource="{Binding GuiObjects}" DataTemplateSelector="{DynamicResource templateSelector"/>
</StackPanel>
</TabItem>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
这里的问题是TabItemTemplate永远不会被调用.我尝试过在TabControlTemplate中设置ItemContainerStyle的解决方案,但后来我遇到了层次结构的问题.如果我在TabItem的内容中绑定"GuiObjects",我将绑定tabItems列表,而不是每个TabItem中的列表.(我想做第二个).这是一个例子:
<DataTemplate x:key="TabControlTemplate" DataTemplateSelector="{DynamicResource templateSelector" >
<TabControl ItemsSource="{Binding GuiObjects}">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding Title}"/>
<Setter Property="Content" Value="<StackPanel><ItemsControl ItemsSource="{Binding GuiObjects}" DataTemplateSelector="{DynamicResource templateSelector"/></StackPanel>"/>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
同样,这个解决方案有级别问题:当我说:{Binding GuiObjets}我指的是TabItems列表,而不是每个TabItem中的FrameworkElements列表.
解决方案是要么为TabControl和TabItem添加单独的DataTemplates,只需修复它,以便DataTemplateSelector实际上适用于TabItems(不知道如何做到这一点).或者使用ItemContainerStyle,并以某种方式告诉它在绑定GuiObjects时向下一级.有人知道怎么做吗?
我想在tabcontrol中的标签页中添加一些控件,但它似乎会添加到所有页面中,并且默认情况下tabcontrol中没有标签页。
我已经阅读了下面的这些链接,但它们对我没有帮助,并且在其中的某些部分让我感到困惑。
http://www.cplusplus.com/forum/windows/37161/
https://msdn.microsoft.com/en-us/library/bb760551.aspx
https://msdn.microsoft.com/en-us/library/hh298366.aspx
https://msdn.microsoft.com/en-us/library/ms645398.aspx
这是我的代码:
[代码]:
#define ID_LBL 500
#define ID_BTN 501
#define ID_TBC 502
HWND hWnd;
void InserTabItem(HWND handle, LPWSTR text, int id)
{
TCITEM tci = { 0 };
tci.mask = TCIF_TEXT;
tci.pszText = text;
tci.cchTextMax = wcslen(text);
SendMessage(handle, TCM_INSERTITEM, id, LPARAM(&tci));
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_CREATE:
{
HWND button_handle = 0;
HWND label_handle = 0;
HWND tab_handle = 0;
tab_handle …Run Code Online (Sandbox Code Playgroud) 我知道这个问题已经被问过和回答过好几次了,但我仍然不明白。我好像少了一点理解。
我有一个 TabControl 绑定到一个可观察的视图模型列表。当然,视图模型可以是不同的类型,从相同的基本类型派生而来。当一个视图模型被添加到列表中时,我希望 tabcontrol 根据视图模型的类型添加一个新的 tabpage。
我不明白如何设置 TabControl 的 ContentTemplate 以根据视图模型的类型选择正确的视图。
可以在此处找到一个基本示例,但我没有使用动态视图启动和运行它:
如何将 TabControl 的项绑定到 wpf 中的可观察集合?
谢谢!约翰内斯
在 中FMX.TTabControl,TabItem.Visible使整个选项卡不可见。选择它不会显示任何内容。我知道那时我可以让它可见。
如何隐藏所有选项卡标题?
我有一个Android应用程序,目前有9个选项卡.每当添加新选项卡时,所有选项卡的宽度都会调整得更小.我觉得添加另一个标签会使标签太小.是否有一种方法可以在TabWidget的一侧显示右/左箭头,类似于.NET选项卡控件,或者如果将TabWidget包装在HorizontalScrollView中更好?滚动tabwidget
我的TabControl中有多个TabItems; tabItem1,tabItem2,tabItem3 ......这些都是
CloseableTabItem.
如果我在tabItem1中添加一个节点并按一个按钮为该节点创建一个subGraph模型,那么
同一节点应该在tabItem2中出现一个按钮; 以便
tabItem2-Header = nodeName和nodeName = tabItem1-Header.
如果我按下tabitem2中节点的按钮,则应该关注tabitem1.如果我关闭
tabItem1并按下相同的Button tabItem1应该再次加载(这发生在
SubGraphButton_Click).
你看到这段代码有问题吗?
private void ChildNode_Click(object sender, RoutedEventArgs args)
{
System.Windows.Controls.Button button = (System.Windows.Controls.Button)sender;
Node node = Part.FindAncestor<Node>(button);
MyNodeData nodeData = node.Data as MyNodeData;
foreach (TabItem item in tabControl.Items)
{
if (nodeData.Text == item.Header.ToString())
{
item.Focus();
}
else if (nodeData.Text != item.Header.ToString())
{
SubGraphButton_Click(sender, args);
}
}
}
private void SubGraphButton_Click(object sender, RoutedEventArgs args)
{
string activeDirectory = @"X:\SubGraph\";
string[] files = Directory.GetFiles(activeDirectory);
foreach (string fileName …Run Code Online (Sandbox Code Playgroud) tabcontrol ×10
c# ×5
wpf ×4
tabitem ×2
.net ×1
android ×1
binding ×1
datatemplate ×1
delphi ×1
firemonkey ×1
onkeyup ×1
winapi ×1
winforms ×1
z-order ×1