我正在使用免费的Krypton工具包在C#中执行此应用程序但是Krypton Navigator是一种付费产品,这对我来说相当昂贵,而且这个应用程序正在我的空闲时间开发,它将免费向公众开放.
所以,我正在寻找一个免费的控件来更好地集成到我的Krypton应用程序中,因为默认的一个不太合适,它将根据操作系统版本而有所不同...
有什么建议?
PS:我知道我可以拥有它,但我不想做那种工作......我更喜欢已经完成的东西,如果它是免费的.
编辑:
我刚刚找到了我想要的东西:http:
//www.angelonline.net/CodeSamples/Lib_3.5.0.zip
现在,我有一个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) 以下示例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.我想找到更改标签时发生的事件.这个活动的名字是什么?
我正在尝试访问事件处理程序以选择选项卡,基本上我在tabControl1中有3个选项卡页面.我希望能够根据选择新选项卡时选择的选项卡来操作列表框中显示的内容.这不起作用,只要选择了标签页,它就无法显示消息框,(当该行被取消注释时)
private void tabControl1_Selected(Object sender, EventArgs e)
{
//MessageBox.Show(tabControl1.SelectedIndex.ToString());3
if (tabControl1.SelectedIndex == 0)
{
//do something
}
}
Run Code Online (Sandbox Code Playgroud) 我想在不同页面是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的标签而不仅仅是内容.
谢谢你的帮助!
以下是我的代码来处理TabBar的Flutter
TabBar(controller: tabController, indicatorColor: white, tabs: [
Tab(
child: Text(
"Present",
style: TextStyle(fontFamily: "BarlowBold", color: black),
),
),
Tab(
child: Text(
"Upcoming",
style: TextStyle(fontFamily: "BarlowBold", color: black),
),
)
]),
Run Code Online (Sandbox Code Playgroud)
我需要fontFamily根据选择的选项卡更改文本。我尝试了 的属性,tabController但它们没有帮助
我试图在我的TabItem中放入一些内容,但是我无法添加填充TabItem空间的容器.我添加的任何东西都显示在中心位置.
我正在使用来自WPF工具包(WhistlerBlue.xaml)的主题,所以我想也许是因为什么导致了我这个问题.
我无法删除主题,因为我需要它.最多我可以改变它的内容,但我是WPF的新手,并且不知道我应该改变什么.
我的TabControl看起来像这样:
<TabControl Margin="0,71.25,0,206.25" Name="tabControl1" TabStripPlacement="Left">
<TabItem Name="tabItem1" FlowDirection="LeftToRight" FontSize="22" Height="200" Width="60" >
<TabItem.Header>
<StackPanel Orientation="Horizontal" >
<Image Height="40" Width="40" Margin="20,0,0,0" VerticalAlignment="Center"></Image>
<TextBlock Margin="15,0,25,0" VerticalAlignment="Center" FontWeight="Bold">
Header
</TextBlock>
</StackPanel>
</TabItem.Header>
<TabItem.Content>
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,0,0,0" >
<TextBlock>Test</TextBlock>
</StackPanel>
</TabItem.Content>
</TabItem>
</TabControl>
Run Code Online (Sandbox Code Playgroud)
有类似的问题,但它没有答案:在WPF中,如何获取tabItem的内容以填充可用空间?
有人能帮我吗?谢谢.
我有一个具有相当标准外观和感觉的UI.它左侧有一列图标,单击时会在右侧打开另一个用户控件.目前我正在为选择图标和用户控件包含使用单独的控件.我有一些奇怪的焦点问题,我厌倦了试图缓解,我想知道我是否可以将tabcontrol设置为看起来像我的UI(假设tabcontrol在导航选项卡时没有焦点问题).
这是基本UI的屏幕截图.样式主要是关于如何使tabcontrols页面选择看起来像我的图标列.任何人都想把他们的帽子放在戒指中,以便我如何通过tabcontrol实现这一目标?我的xaml在这一点上非常弱.
alt text http://img413.imageshack.us/img413/8399/directoru.png
我有一个标签控件,需要删除所选标签周围的虚线焦点矩形.
我已将TabControl的TabStop属性设置为false.但是,如果单击选项卡并Tab按键,则会在tabname周围显示虚线矩形.
我试过创建自己的TabControl并试过这个
class MyTabControl : TabControl
{
public MyTabControl()
{
TabStop = false;
DrawMode = TabDrawMode.OwnerDrawFixed;
DrawItem += new DrawItemEventHandler(DoMoreTabControl_DrawItem);
Invalidate();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,仍然会出现虚线矩形.
我也尝试重写该MyTabControl.OnPaint()方法,但它没有帮助.
有没有办法实现这个目标?