MainWindow.xaml中
<ui:CCWindow x:Class="Bhidi.Revit.TabItemTest.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Bhidi.Revit.TabItemTest.Views"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:ui="clr-namespace:CC.Style;assembly=CC.Style"
xmlns:viewmodel="clr-namespace:Bhidi.Revit.TabItemTest.ViewModel"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=viewmodel:MainViewModel}"
Title="测试"
MinHeight="530" MinWidth="534"
Height="530" Width="534"
hc:IconElement.Height="20"
>
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml" />
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml" />
<ResourceDictionary Source="pack://application:,,,/CC.Style;component/CCTheme.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style TargetType="{x:Type TabControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabControl}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ScrollViewer Grid.Row="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
<TabPanel x:Name="HeaderPanel" Panel.ZIndex="1" Margin="2,2,2,0" IsItemsHost="True" KeyboardNavigation.TabIndex="1" Background="Transparent"/>
</ScrollViewer>
<ContentPresenter x:Name="PART_SelectedContentHost" Grid.Row="1" ContentSource="SelectedContent" Margin="0,2"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Window.Resources>
<Viewbox Stretch="UniformToFill">
<Canvas Height="530" Width="534" >
<Grid Height="530" Width="534">
<Grid.RowDefinitions >
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid Margin="8,0">
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,5">
<Image Source="pack://application:,,,/Bhidi.Revit;component/Resources/Rad_Blue.png" Style="{StaticResource RadBlueImageSytle}"/>
<TextBlock Margin="6,4">
<Run Text="基础布局" />
</TextBlock>
</StackPanel>
<Border Style="{StaticResource CCBorder}" Background="White">
<Grid Margin="7,0" Height="200">
<TabControl x:Name="myTabControl1" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedTab}" >
</TabControl>
</Grid>
</Border>
</StackPanel>
</Grid >
<Grid Margin="8,0" Grid.Row="1">
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,5">
<Image Source="pack://application:,,,/Bhidi.Revit;component/Resources/Rad_Blue.png" Style="{StaticResource RadBlueImageSytle}"/>
<TextBlock Margin="6,4">
<Run Text="基础布局" />
</TextBlock>
</StackPanel>
<Border Style="{StaticResource CCBorder}" Background="White">
<Grid Margin="7,0" Height="200">
<TabControl x:Name="myTabControl2">
<TabItem Header="测试1">
<StackPanel>
<Button Content="测试点我" HorizontalAlignment="Left" VerticalAlignment="Top" Command="{Binding Button_Click}"></Button>
<TextBox x:Name="textBoxTest1" Background="Red" BorderThickness="3" BorderBrush="Green" Width="50" HorizontalAlignment="Left" Text="{Binding TextBoxTest}" ></TextBox>
</StackPanel>
</TabItem>
<TabItem Header="测试2"></TabItem>
</TabControl>
</Grid>
</Border>
</StackPanel>
</Grid >
<Grid Grid.Row="3" Margin="8,16">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid HorizontalAlignment="Left" >
<Image Source="pack://application:,,,/Bhidi.Revit;component/Resources/公司Logo.png" />
</Grid>
<StackPanel Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right" >
<Button Content="生成轴网" Command="{Binding CreatModel}" Style="{StaticResource MessageBoxPrimaryButtonStyle}"/>
<Button Click="CloseWindow" Content="取消 (Esc)" IsCancel="True" Style="{StaticResource MessageBoxButtonStyle}" Margin="8,0,0,0"/>
</StackPanel>
</Grid>
</Grid>
</Canvas>
</Viewbox>
</ui:CCWindow>
MainWindow.xaml.cs中
using Autodesk.Revit.DB;
using CC.Style;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Bhidi.Revit.TabItemTest.Views
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : CCWindow
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel.MainViewModel();
ViewModel.MainViewModel.Window = this;
}
}
}
MainViewModel中
using Autodesk.Revit.DB.Electrical;
using Bhidi.Revit.TabItemTest.Views;
using CC.Utils.Models;
using FilterTreeControlWPF;
using GalaSoft.MvvmLight.Command;
using NPOI.OpenXmlFormats.Wordprocessing;
using NPOI.SS.Formula.Functions;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Drawing.Text;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Media;
using System.Xaml;
namespace Bhidi.Revit.TabItemTest.ViewModel
{
public class MainViewModel:CCViewModelBase
{
public static Window Window { get; set; }
public MainViewModel()
{
Init();
}
private void Init()
{
TextBoxTest = "测试你";
int unitNumber = 100;
for (int i = 1; i <= unitNumber; i+=2)
{
Items.Add(new TabItem() { Header = $"{i}~{i+1}机组室"});
}
for (int i =0;i<items.Count();i++)
{
StackPanel stackPanel = new StackPanel();
Button button = new Button();
button.Content = "Cilck Me";
button.HorizontalAlignment = HorizontalAlignment.Left;
button.VerticalAlignment = VerticalAlignment.Top;
button.Click += NewButton_Click;
TextBox textBox = new TextBox();
textBox.HorizontalAlignment = HorizontalAlignment.Left;
textBox.VerticalAlignment = VerticalAlignment.Top;
textBox.Text = TextBoxTest;
textBox.BorderThickness = new Thickness(5);
textBox.Background = new SolidColorBrush(Colors.Red);
textBox.BorderBrush = new SolidColorBrush(Colors.Green);
textBox.Margin = new Thickness(50,5,5,5);
textBox.Width = 50;
textBox.Name = $"myTextbox{i}";
stackPanel.Children.Add(button);
stackPanel.Children.Add(textBox);
items[i].Content = stackPanel;
}
}
private ObservableCollection<TabItem> items = new ObservableCollection<TabItem>();
public ObservableCollection<TabItem> Items
{
get { return items; }
set
{
items = value;
RaisePropertyChanged(nameof(Items));
}
}
private void NewButton_Click(object sender, RoutedEventArgs e)
{
// Button的点击事件处理
MessageBox.Show("你还真点我!");
//MessageBox.Show(TextBoxTest);
if (Window !=null)
{
var view = (MainWindow)Window;
TabItem selTabItem = view.myTabControl1.SelectedItem as TabItem;
int index = view.myTabControl1.Items.IndexOf(selTabItem);
//MessageBox.Show(index.ToString());
var panel = items[index].Content as Panel;
var childs = panel.Children;
foreach (var child in childs)
{
if (child is TextBox textBox && textBox.Name == $"myTextbox{index}")
{
MessageBox.Show(textBox.Text);
}
}
}
}
private RelayCommand button_Click;
public ICommand Button_Click
{
get
{
if(button_Click == null)
{
button_Click = new RelayCommand(PerformButton_Click);
}
return button_Click;
}
}
private void PerformButton_Click()
{
MessageBox.Show(TextBoxTest);
}
private string textBoxTest;
public string TextBoxTest { get => textBoxTest; set => Set(ref textBoxTest, value); }
}
}