C# WPF动态填充UI
如何根据C# WPF动态填充UI,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,如何根据datagrid的内容填充UI项,例如textblock 例如,如果我有一个datagrid,它的列数不同,每个列都有一个特定的标题。是否可以为每列创建一个新的textblock,并将文本内容作为列标题 我正试图根据我的datagrid的内容填充列名和复选框列表,其中包含从excel文件中拉入的数据 谢谢。最简单的解决方案是绑定到DataGrid的列属性 MainWindow.xaml: <Window x:Class="WpfApp1.MainWindow" xm
datagrid
的内容填充UI项,例如textblock
例如,如果我有一个datagrid
,它的列数不同,每个列都有一个特定的标题。是否可以为每列创建一个新的textblock
,并将文本内容作为列标题
我正试图根据我的datagrid
的内容填充列名和复选框列表,其中包含从excel文件中拉入的数据
谢谢。最简单的解决方案是绑定到
DataGrid
的列
属性
MainWindow.xaml:
<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>
然后,您可以修改
以根据需要调整项目外观。最简单的解决方案是绑定到DataGrid
的列
属性
MainWindow.xaml:
<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>
然后,您可以修改
以根据需要调整项目外观。但是,如果您的datagrid和目标控件(将绑定到datagrid
s列
)位于不同的控件上,您可能无法通过ElementName
标记扩展访问datagrid。如果是这样,您必须通过共享视图模型/资源传递绑定。但是,如果您的datagrid和目标控件(将绑定到datagrid
sColumns
)位于不同的控件上,您可能无法通过ElementName
标记扩展访问datagrid。如果是这样,您必须通过共享视图模型/资源传递绑定。