最も簡単な解決策はDataGrid
のColumns
プロパティ
MainWindow.xamlにバインドすることです。そして、あなたが<ListBox.ItemTemplate>
を変更することができ
using System.Linq;
namespace WpfApp1
{
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
DataGrid1.ItemsSource = Enumerable.Range(1, 10).ToList();
}
}
}
:
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<DataGrid Grid.Column="0" AutoGenerateColumns="False" x:Name="DataGrid1">
<DataGrid.Columns>
<DataGridTextColumn Header="Column 1" Width="75" />
<DataGridTextColumn Header="Column 2" Width="75" />
<DataGridTextColumn Header="Column 3" Width="75" />
<DataGridTextColumn Header="Column 4" Width="75" />
</DataGrid.Columns>
</DataGrid>
<ListBox Grid.Column="1" ItemsSource="{Binding ElementName=DataGrid1, Path=Columns}">
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type DataGridColumn}">
<TextBlock Text="{Binding Path=Header}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>
MainWindow.xaml.cs必要に応じてアイテムの外観を調整します。
DataGridとターゲットコントロール( 'DataGrid's' Columns'にバインドされる)が異なるコントロールにある場合、 'ElementName'マークアップ拡張を介してDataGridにアクセスできないことがあります。その場合は、共有viewmodel/resource経由でバインディングを渡す必要があります。 – Shcherban