标签: tabitem

如何将TabControl绑定到ViewModels集合?

基本上我在我的MainViewModel.cs中:

ObservableCollection<TabItem> MyTabs { get; private set; }
Run Code Online (Sandbox Code Playgroud)

但是,我需要以某种方式不仅能够创建选项卡,而且还可以在维护MVVM的同时加载选项卡内容并将其链接到适当的视图模型.

基本上,我如何将用户控件作为tabitem的内容加载并将该usercontrol连接到适当的viewmodel.使这个困难的部分是ViewModel不应该构造实际的视图项,对吧?或者可以吗?

基本上,这将是MVVM合适的:

UserControl address = new AddressControl();
NotificationObject vm = new AddressViewModel();
address.DataContext = vm;
MyTabs[0] = new TabItem()
{
    Content = address;
}
Run Code Online (Sandbox Code Playgroud)

我只是问,因为我正在ViewModel中构建一个View(AddressControl),这对我来说听起来像MVVM禁忌.

wpf tabcontrol mvvm tabitem prism-4

66
推荐指数
2
解决办法
7万
查看次数

在C#WPF中,为什么我的TabControl的SelectionChanged事件经常被触发?

我有一个标签式GUI,每个标签包含一个框架.在其中一个框架中有一个DataGrid.当用户选择此选项卡时,我需要对datagrid进行排序,因此我使用TabControl SelectionChanged事件来触发排序.但是,每次从DataGrid中选择一个项时,此事件都会触发,即使选项卡本身保持不变.

我尝试了很多不同的事件:GotFocus用于TabItem的TabItem RequestBringIntoView

但他们似乎都遇到了这个问题.是什么造成的?

c# wpf tabcontrol tabitem

54
推荐指数
2
解决办法
4万
查看次数

如何以编程方式选择WPF TabControl中的TabItem

我想知道如何在WPF TabControl中选择特定的TabItem.

我尝试过这些但是没有用!

MyTabControl.SelectedIndex = x

MyTabControl.SelectedItem = MyTabItem

MyTabControl.SelectedValue = MyTabItem

MyTabItem.IsSelected = True
Run Code Online (Sandbox Code Playgroud)

wpf tabcontrol tabitem

35
推荐指数
5
解决办法
5万
查看次数

如何删除TabItem内容的默认边距?

我正在使用TabControlWPF中的类,我注意到每个内容的TabItem所有边都有4像素的默认边距.

示例代码:

<Window x:Class="TabControlPadding.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
  <Grid>
    <TabControl Margin="10">
      <TabItem Header="Tab 1">
        <Grid Background="Pink"/>
      </TabItem>
      <TabItem Header="Tab 2">
        <Grid Background="LightBlue"/>
      </TabItem>
    </TabControl>
  </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

截图:

TabItem内容周围的边距

我想摆脱这个边际(将其减少到零),但我宁愿不必完全替换模板或类似的任何重量.

有一种简单的方法可以以非常有针对性的方式做到这一点吗?

wpf tabcontrol margin tabitem

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

TabControl.ItemTemplate:使用StringFormat将TabItem.Header.Text设置为MultiBinding

如何将TabItem.Header设置为从少数字段获取的绑定,每个绑定以不同的大小显示,全部代替原始标题文本; 没有覆盖标题的默认样式和行为 - 我只需要文本.

我试图设置它的模板但是它创建了一个包含内部控件的矩形,这个矩形对用户点击没有响应,并且还有控件样式,我希望这个控件不可见,只有它的文本应该是可见的.

我尝试过以下方法:

<TabControl ItemsSource="{Binding}">
    <TabControl.ItemTemplate>
         <DataTemplate>
             <TabItem>
                 <TabItem.Header>
                     <MultiBinding StringFormat="{}{0}-{1}">
                         <Binding Path="Title"/>
                         <Binding Path="Category.Title"/>
                     </MultiBinding>
                 </TabItem.Header>
                 <TabItem.Content>
                     <TextBlock>
                         Here is what is gonna be in the TabItem - not header
                     </TextBlock>
                 </TabItem.Content>
             </TabItem>
         </DataTemplate>
    </TabControl.ItemTemplate>
</TabControl>
Run Code Online (Sandbox Code Playgroud)

但它没有显示任何东西.

我也尝试将HeaderTemplate设置为DataTemplate,但是会发生的是,DataTemplate会覆盖TabItem样式,当我单击文本时它不会转到单击的选项卡,此外,未选中的选项卡看起来很有趣,我看到了文本的矩形浮动,而我希望它是透明的.

因此,总结一下我的问题,我想将TabItem.Header.Text设置为带有StringFormat的MultiBinding.

wpf binding tabcontrol header tabitem

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

TabItem在一个单独的XAML中

是否可以将TabItem放入单独的XAML并引用如下内容:

<TabControl>
     <local:MyTabItem/>
</TabControl>



In Separate XAML:
<UserControl x:Class="MyProject.MyTabItem"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <TabItem Header="MyTab">

    </TabItem>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

当然它不起作用,但我想知道我该怎么做?

wpf tabitem

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

在TabControl中更改所选tabItem的文本颜色?

在第二个代码中有一个带有文本"Minaövningar"的textBlock当选择tabItem时,如何将文本颜色更改为黑色?

样式:

 <Style TargetType="{x:Type TabItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TabItem}">
                    <Grid>
                        <Border Name="Border" Background="Transparent" BorderBrush="Transparent"  BorderThickness="0"  Margin="0,0,0,13" CornerRadius="5" >

                            <ContentPresenter x:Name="ContentSite" VerticalAlignment="Top"  HorizontalAlignment="Center" ContentSource="Header" Margin="9"/>

                        </Border>
                    </Grid>

                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="Foreground" Value="Black"/>
                            <Setter TargetName="Border" Property="Background">
                                <Setter.Value>
                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                            <GradientStop Color="#FFF9F7FD" Offset="0.432" />
                                            <GradientStop Color="#FFECF7FD" Offset="0.433" />
                                        </LinearGradientBrush>
                                </Setter.Value>
                                </Setter>
                            <Setter TargetName="ContentSite" Property="Margin" Value="9,12,9,9" />
                        </Trigger>

                        <Trigger Property="IsSelected" Value="False">
                            <Setter TargetName="Border" Property="Background" Value="Transparent" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
Run Code Online (Sandbox Code Playgroud)

TabItem的:

 <TabItem Background="White">
            <TabItem.Header>
                <StackPanel Orientation="Vertical">
                    <Image …
Run Code Online (Sandbox Code Playgroud)

wpf tabcontrol tabitem

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

WPF:TabControl中的Center TabItems

在我的XAML代码中,我有一个包含多个项目的TabControl.我遇到的问题是我不能把关于内容区域的tabitems集中在一起.标签总是从左侧开始,但我需要它们居中.这是我的代码:

<TabControl>
    <TabItem Header="Test 1"  Style="{StaticResource LeftTab}" Height="40" />
    <TabItem Header="Test 2"  Style="{StaticResource MiddleTab}"  />
    <TabItem Header="Test 3"  Style="{StaticResource MiddleTab}" />
    <TabItem Header="Test 4" Style="{StaticResource RightTab}"  />
</TabControl>
Run Code Online (Sandbox Code Playgroud)

我不知道物品的中心 - 任何想法?

wpf tabcontrol tabitem

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

WPF - TabItem选择tabitem或将鼠标悬停在其上时背景颜色会发生变化

我将xaml中tabitem的背景颜色设置为RED,但是当我运行它并将鼠标悬停在它上面或选择它时,它会更改默认的灰色外观.仅在选择其他tabitem时才能正确显示.我如何一直保持红色.谢谢!

wpf styles tabcontrol wpf-controls tabitem

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

在TabItem中加载UserControl

我有一个Usercontrol(TabUserControl),其中包含一个TabControl.UserControl的Viewmodel加载了Ob Obtable的TabItems集合.这些项目是另一个用户控件.当我只在tabcontrol中加载文本时没有问题,但是如何将其他用户控件加载到TabUserControl的tabitem中.我正在使用MVVM.

这是我的代码:

public class TabItem
{
    public string Header { get; set; }
    public object Content { get; set; } // object to allow all sort of items??
}
Run Code Online (Sandbox Code Playgroud)

TabUserControl的Viewmodel

public class TabViewModel
{
    public ObservableCollection<TabItem> Tabs {get;set;}

    public TabViewModel()
    {
        Tabs = new ObservableCollection<TabItem>();
        //Tabs.Add(new TabItem { Header = "Overview", Content = new OverviewViewModel() }); How to load a usercontrol here if it's in the ItemCollection?
        Tabs.Add(new TabItem { Header = "Overview", Content = "Bla bla bla" }); …
Run Code Online (Sandbox Code Playgroud)

wpf user-controls mvvm tabitem

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

标签 统计

tabitem ×10

wpf ×10

tabcontrol ×8

mvvm ×2

binding ×1

c# ×1

header ×1

margin ×1

prism-4 ×1

styles ×1

user-controls ×1

wpf-controls ×1