WPF TabControl only load the selected TabItem

1.binding ItemsSource

 public class TabItemViewModel
 {
        public string Header { get; set; }
        public FrameworkElement Content { get; set; }
 }
xmlns:sc="clr-namespace:System.Collections;assembly=mscorlib"<Window.Resources>
    <sc:ArrayList x:Key="Datas">
        <local:TabItemViewModel Header="uer1">
            <local:TabItemViewModel.Content>
                <local:UserControl1 />
            </local:TabItemViewModel.Content>
        </local:TabItemViewModel>
        <local:TabItemViewModel Header="uer2">
            <local:TabItemViewModel.Content>
                <local:UserControl2 />
            </local:TabItemViewModel.Content>
        </local:TabItemViewModel>
    </sc:ArrayList>
</Window.Resources>

<TabControl ItemsSource="{StaticResource Datas}">
    <TabControl.ItemContainerStyle>
        <Style TargetType="TabItem">
            <Setter Property="Header" Value="{Binding Header}"/>
            <Setter Property="Content" Value="{Binding Content}"/>
        </Style>
    </TabControl.ItemContainerStyle>
</TabControl>

2. use TabItem

<TabControl SelectionChanged="TabControl_SelectionChanged">
    <TabItem Header="zzu Red"">
        <Grid Background="Red"/>
    </TabItem>
    <TabItem Header="zzu Orange">
        <Grid Background="Orange"/>
    </TabItem>
</TabControl>
private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    TabControl tabControl = sender as TabControl;
    for (int i = 0; i < tabControl.Items.Count; i++)
    {
        TabItem item = tabControl.Items[i] as TabItem;
        if (item.IsSelected)
        {
            if (item.Content == null)
            {
                item.Content = item.Tag;
            }
            else
            {
                item.Tag = item.Content;
            }
        }
        else
        {
            item.Tag = item.Content;
            item.Content = null;
        }
    }
}
时间: 2024-10-20 12:33:45

WPF TabControl only load the selected TabItem的相关文章

WPF TabControl 模拟动画

1 public class MyTabControl : TabControl 2 { 3 4 Timer t = null; 5 protected override void OnSelectionChanged(SelectionChangedEventArgs e) 6 { 7 Action a = () => 8 { 9 try 10 { 11 var control = e.Source as MyTabControl; 12 if (control == null) return

WPF TabControl Unload俩次的解决方案

WPF中,有些控件会多次触发Unload,有点莫名其妙~ Unload的多次触发 TabControl的内容,我是这么设置的: 在TabItem的CacheSettingView中,监听Loaded/Unloaded事件. 当窗口加载时,触发一次Loaded 不选中TabItem,并关闭窗口,触发一次Unloaded 但是,如果选中相应的Tab并显示了CacheSettingView内容后,再关闭窗口,会触发俩次Unloaded 原因:俩次Unloaded,分别是由TabControl和TabI

WPF TabControl 隐藏标头

1. 将每个 TabItem 的 Visibility 属性设置为 Visibility.Collapsed 即可隐藏标头 <TabItem Visibility="Collapsed"> 2. 设置 TabControl 控件的 SelectedIndex 属性即可在标签页之间切换

WPF TabControl SelectionChanged 重复执行的问题

很邪门的问题,我曾经都感觉是微软的bug了. 问题是这样的:在我的tabcontrol下的tabitem中有一个combobox控件,由于一些原因,需要执行tabcontrol的SelectionChanged 事件,但是比较奇怪的时候,每当我在combobox选择一项时,即combobox的SelectionChanged 事件改变的时候,tabcontrol的SelectionChanged 事件同时也执行了,百思不得其解,后来在网上找到了相关的原因,如下: This is because

WPF TabControl控件-事件相关问题

TabControl控件的TabItem的Content元素,例如:DataGrid控件,在对事件的处理时,需要对事件的源引起关注,当需要处理DataGrid的事件时,事件会传递到TabControl中,解决这种问题的方法如下: 方法一:判断触发此事件的源是谁,根据事件的源再做相应处理 private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.Source is Tab

wpf TabControl控件的用法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Med

WPF TabControl联动

TabItem的Header放入Radiobutton,TabItem的IsExpanded属性绑定Radiobutton的IsChecked属性,修改Radiobutton样式去掉Radiobutton的选择圆圈.

WPF 自定义TabControl控件样式

一.前言 程序中经常会用到TabControl控件,默认的控件样式很普通.而且样式或功能不一定符合我们的要求.比如:我们需要TabControl的标题能够居中.或平均分布:或者我们希望TabControl的标题能够进行关闭.要实现这些功能我们需要对TabControl的样式进行定义. 二.实现TabControl的标题平均分布 默认的TabControl标题是使用TabPanel容器包含的.要想实现TabControl标题头平均分布,需要把TabPanel替换成UniformGrid: 替换后的

WPF中PreviewMouseDownEvent的系统处理:TabItem的PreviewMouseDown 事件弹框后不切换的问题调查

?? 背景: UI中有一个TabControl, 包含2个TabItem,当切换到别的TabItem时可能弹框然后根据逻辑判断是否跳转过去. 然后我就做了这样一个demo: xaml: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" xmln