标签: tabcontrol

WPF TabControl和DataTemplates

我有一组ViewModel,我绑定到TabControl的ItemsSource属性.让我们调用那些ViewModels AViewModel,BViewModel和CViewModel.其中每个都需要有不同的ItemTemplate(对于标题;因为它们每个都需要显示不同的图标)和不同的ContentTemplate(因为它们具有非常不同的交互模型).

我想要的是这样的:

在某处的Resource.xaml文件中定义:

<DataTemplate x:Key="ItemTemplate" DataType="{x:Type AViewModel}">
    ...
</DataTemplate>

<DataTemplate x:Key="ItemTemplate" DataType="{x:Type BViewModel}">
    ...
</DataTemplate>

<DataTemplate x:Key="ItemTemplate" DataType="{x:Type CViewModel}">
    ...
</DataTemplate>

<DataTemplate x:Key="ContentTemplate" DataType="{x:Type AViewModel}">
    ...
</DataTemplate>

<DataTemplate x:Key="ContentTemplate" DataType="{x:Type BViewModel}">
    ...
</DataTemplate>

<DataTemplate x:Key="ContentTemplate" DataType="{x:Type CViewModel}">
    ...
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

单独定义:

<TabControl ItemTemplate="[ Some way to select "ItemTemplate" based on the type ]"
            ContentTemplate="[ Some way to select "ContentTemplate" based on the type ]"/>
Run Code Online (Sandbox Code Playgroud)

现在,我真实地知道,每次我使用相同的键定义DataTemplate时,系统就会抱怨.但是,有什么我可以做的类似于这将允许我将DataTemplate放入基于名称和数据类型的TabControl?

wpf tabcontrol datatemplate

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

是否可以创建一个看起来不像选项卡控件的WPF选项卡控件模板?

我想要的是一个控件,其功能就像选项卡控件一样,但不是在顶部有选项卡,项目将显示在侧面的列表框中.我想这是可能的,但没有找到任何例子,我希望有人在这里做了类似的事情.

wpf tabcontrol wpf-controls controltemplate

8
推荐指数
2
解决办法
3003
查看次数

TabControl.VerticalAlignment =拉伸不做任何事情

我正在尝试使TabControl根据其外部空间(它在StackPanel中)自动调整大小:

<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="100">
    <Grid>
        <StackPanel>
            <TabControl 
                BorderBrush="Red" 
                BorderThickness="2" 
                VerticalAlignment="Stretch" 
                VerticalContentAlignment="Stretch">

                <TabItem Header="Tab1"/>
                <TabItem Header="Tab2"/>
            </TabControl>
        </StackPanel>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

上面的代码片段生成以下窗口,同时我希望红色边框到达窗口的底部:

替代文字

wpf layout tabcontrol vertical-alignment

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

TabControl/TabPanel/TabItem的WPF样式

这是关于WPF TabControl,TabItem和TabPanel的新手问题.在StackOVF上有一个相关的问题,我在我的应用程序中愉快地使用了答案.这是答案的链接,以及代码片段:

WPF:TabControl中的Center TabItems

<TabControl>
    <TabControl.Resources>
        <Style TargetType="{x:Type TabPanel}">
            <Setter Property="HorizontalAlignment" Value="Center" />
        </Style>
    </TabControl.Resources>

    <TabItem Header="Test 1" />
    <TabItem Header="Test 2" />
    <TabItem Header="Test 3" />
    <TabItem Header="Test 4" />
</TabControl>
Run Code Online (Sandbox Code Playgroud)

虽然这很棒,但我很乐意将资源和样式的东西移到更好的位置(样式表等).我的第一次尝试是将<TabControl.Resources>标签移动到,<Window.Resources>但这不起作用.我尝试了几种变化但无法使其工作.这是我有点期望尝试的一个例子:

<!-- Doesn't work as expected: -->
<Window.Resources>
    <Style TargetType="{x:Type TabPanel}">
        <Setter Property="HorizontalAlignment" Value="Center" />
    </Style>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)

搜索网络和msdn并没有帮助我解决我的问题,而是给我留下了第二个(相关的)问题:实际上一个TabPanel,它与TabControl有什么关系?

任何帮助和提示将不胜感激.

(编辑:在最后一个例子中评论说代码对我不起作用.)

wpf xaml tabcontrol tabpanel

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

如何阻止Wpf Tabcontrol在Tab更改时卸载Visual Tree

嗨我的用户控件放在选项卡中每次更改选项卡时都会被卸载和加载.它会在应用程序中创建一些不必要的延迟.我正在寻找一些方法来修复这种行为.我知道我必须继承tabcontrol来改变这种行为但是如何..?

wpf tabcontrol

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

WPF多行TabControl无需重新排列行

当水平尺寸太小时,WPF TabControl及其默认TabPanel将选项卡项排列为多行.然后,选项卡选择会更改这些行的顺序,因此选定的选项卡项始终位于第一行.

我发现了一些关于如何将TabPanel替换为另一个项控件的文章,因此他们获得滚动选项卡而不是多线行为.

我想保留多行(不滚动),但禁用行的重新排列.创建选项卡后,无论选择如何更改,它们都应保持原位.这可能吗?

wpf tabcontrol

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

使用Exisiting控件将TabControl添加到窗体

在使用.Net 2.0的WinForms C#中,我想将TabControl添加到具有现有控件的Form中.有没有办法将所有控件移动到选项卡控件中,而Visual Studio不会吹掉我所有的事件处理程序?使用Visual Studio 2005.

c# tabcontrol visual-studio-2005 .net-2.0 winforms

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

如何创建一个WPF标签控件作为雪佛龙列表?

我有一个WPF选项卡控件.但我想更改标签项样式.默认样式为方形.我需要把它变成雪佛龙列表.每个块都是六边形.

编辑: 请参阅附图

wpf tabcontrol

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

将TabControl ItemsSource绑定到ViewModels的集合

出于某种原因,我TabControl很难在绑定ItemsSourceObservableCollection视图模型时让我正确显示.我的设计基于这里的教程:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx.我确实在这里发现了一些像我这样的问题,但没有一个问题解决了我 这是我TabControl的xaml.

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

ClosableTabItemTemplate以下是哪里.

<DataTemplate x:Key="ClosableTabItemTemplate">
        <DockPanel Width="120">
          <Button 
              Command="{Binding Path=CloseCommand}"
              Content="X"
              Cursor="Hand"
              DockPanel.Dock="Right"
              Focusable="False"
              FontFamily="Courier" 
              FontSize="9"
              FontWeight="Bold"  
              Margin="0,1,0,0"
              Padding="0"
              VerticalContentAlignment="Bottom"
              Width="16" Height="16" 
              />
          <ContentPresenter 
              Content="{Binding Path=DisplayName}" 
              VerticalAlignment="Center" 
              />
        </DockPanel>
      </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

WorkspacesObservableCollection视图模型.ActiveWorkspaceIndex只是我在视图模型中跟踪的活动工作区索引.我通过App.xaml文件中的以下数据模板将我的视图模型与视图实例相关联.

<DataTemplate DataType="{x:Type vm:ViewModelStartPage}">
     <v:ViewStartPage/>
 </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

我只在我的工作空间集合中添加了一个视图模型.我看到选项卡控件中显示了2个视图,它们没有标签.这几乎就像TabControl不知道将不同的视图视为TabItems,它的行为更像堆栈面板,堆叠视图.如果我在代码中创建选项卡项,它可以正常工作:

System.Windows.Controls.TabItem i = new System.Windows.Controls.TabItem();
i.Content = new Views.ViewStartPage();
i.Header = "A Tab Item";
this.xTabControl.Items.Add(i); 
Run Code Online (Sandbox Code Playgroud)

我必须遗漏一些内容模板或其他东西.我将在稍后设置我的标签样式,但是现在我很乐意让基本标签工作.标签内容中的视图对于每个选项卡也可能不同,所以我不能使用我看到的所有地方的简单文本块TabControl模板示例...即使不是这样......

<TabControl.ContentTemplate>
    <DataTemplate> …
Run Code Online (Sandbox Code Playgroud)

wpf xaml binding tabcontrol

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

WPF:当tabItem居中时,更改TabControl标签后面的背景

所以,我希望我的标签中的标签项水平居中.我还想更改选项卡背后的背景.我找到了这两件事的答案:

这个解释了我想要为背景做什么,并给出了解决方案

这个解释了如何使tabItem居中

我遇到的问题是它们都是单独工作的,但是当它们结合起来时,它们就无法工作.tabItems中心很好,但背景颜色不是我指定的颜色.

例如代码:

<TabControl>
    <TabControl.Resources>
        <Style TargetType="{x:Type TabPanel}">
            <Setter Property="HorizontalAlignment" Value="Center" />
            <Setter Property="Background" Value="Red" />
        </Style>
    </TabControl.Resources>

    <TabItem Header="Test 1" />
    <TabItem Header="Test 2" />
    <TabItem Header="Test 3" />
    <TabItem Header="Test 4" />
</TabControl>
Run Code Online (Sandbox Code Playgroud)

救命?

c# wpf tabcontrol

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