全て
| カテゴリ未分類
| 通常
| 数学
| 投資
| 副業
| 転職・就職
| ブログ
| 株Stock
| VBA
| SharePoint
| REST API
| RenderListDataAsStream
| PowerAutomateDesktop
| Graph API
| PowerApps
| PowerAutomate
| PowerFx
| OfficeScriptオフィススクリプト
| PowerAutomate日時Excel日時相互関係
| PowerShell
| Dataverse
| UiPath
| OneDrive
| LINQ
| VB.NET
| C#.NET
| WPFC#.NET
| Git
カテゴリ:C#.NET
動的にタブの内容を複製する場合、ViewModelを使ってタブの内容を管理し、そのViewModelを元に新しいタブの内容を作成することが一般的です。以下に、そのようなサンプルコードを示します。 まず、ViewModelを作成します。 ```csharp using System.Collections.ObjectModel; public class TabViewModel { public ObservableCollection<string> Items { get; set; } public TabViewModel() { Items = new ObservableCollection<string>(); } } ``` 次に、MainWindow.xaml.csファイルに、TabControlのコンテンツを複製するためのメソッドを追加します。 ```csharp using System.Windows; using System.Windows.Controls; public partial class MainWindow : Window { private ObservableCollection<TabViewModel> tabViewModels; public MainWindow() { InitializeComponent(); tabViewModels = new ObservableCollection<TabViewModel>(); tabViewModels.Add(new TabViewModel()); // 最初のタブを追加 tabControl.ItemsSource = tabViewModels; } private void AddTabButton_Click(object sender, RoutedEventArgs e) { tabViewModels.Add(new TabViewModel()); // 新しいタブを追加 } private void CloneTabButton_Click(object sender, RoutedEventArgs e) { if (tabControl.SelectedItem != null) { // 選択されたタブの内容をコピーして新しいタブを追加 TabViewModel selectedTabViewModel = (TabViewModel)tabControl.SelectedItem; TabViewModel clonedTabViewModel = new TabViewModel(); foreach (string item in selectedTabViewModel.Items) { clonedTabViewModel.Items.Add(item); } tabViewModels.Add(clonedTabViewModel); } } } ``` 最後に、MainWindow.xamlファイルにボタンを追加し、そのボタンがクリックされたときにタブの内容を複製するメソッドを呼び出すようにします。 ```xml <Window x:Class="WpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="TabControl Sample" Height="450" Width="800"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <StackPanel Grid.Row="0" Orientation="Horizontal"> <Button Content="Add Tab" Click="AddTabButton_Click"/> <Button Content="Clone Tab" Click="CloneTabButton_Click"/> </StackPanel> <TabControl Grid.Row="1" x:Name="tabControl"> <TabControl.ItemTemplate> <DataTemplate> <TextBlock Text="Tab"/> </DataTemplate> </TabControl.ItemTemplate> <TabControl.ContentTemplate> <DataTemplate> <ListBox ItemsSource="{Binding Items}"/> </DataTemplate> </TabControl.ContentTemplate> </TabControl> </Grid> </Window> ``` このサンプルでは、Add Tabボタンをクリックすると新しいタブが追加され、Clone Tabボタンをクリックすると選択されたタブの内容がコピーされて新しいタブが追加されます。TabControlのItemsSourceにtabViewModelsをバインドしているため、ViewModelを追加または変更することでTabControlの内容が自動的に更新されます。 お気に入りの記事を「いいね!」で応援しよう
Last updated
2024.04.21 15:37:54
[C#.NET] カテゴリの最新記事
|