0
我正忙于一个基本功能,其中向用户提供包含数据库内表的ListBox
。在ListBox
的右侧是DataGrid
,它在表格中显示字段。这意味着每次选择另一个表格时列都会更改,并且是我的问题所在。我知道自动列生成功能,但因为我想提供我自己的列名,我需要手动执行它。我已经阅读了有关在自动列生成处于活动状态时可以处理更改名称的事件,但由于我正在使用MVVM,因此我希望避免使用文件后面的代码进行事件处理。 我的想法是创建一对模板,然后在DataGrid
内部使用触发器来选择正确的列布局。这是我目前所拥有的。 模板:如何获取DataGrid模板并根据需要进行更改
<UserControl.Resources>
<DataTemplate x:Key="template_measurement">
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding id}"/>
<DataGridTextColumn Header="Name" Binding="{Binding name}"/>
<DataGridTextColumn Header="Latitude" Binding="{Binding source_latitude}"/>
<DataGridTextColumn Header="Longitude" Binding="{Binding source_longitude}"/>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
<DataTemplate x:Key="template_realestate">
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding id}"/>
<DataGridTextColumn Header="Name" Binding="{Binding name}"/>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</UserControl.Resources>
的DataGrid
:
<DataGrid AutoGenerateColumns="False"
Name="grdData"
HorizontalAlignment="Left"
Margin="10,10,0,0"
Grid.Row="2"
VerticalAlignment="Top"
Height="200"
Width="500"
ItemsSource="{Binding Path=SelectedTable}">
<DataGrid.Triggers>
<Trigger Property="{Binding Path=SelectedTableName}" Value="measurement">
<Setter Property="DataGrid" Value="{StaticResource template_measurement}"/>
</Trigger>
</DataGrid.Triggers>
</DataGrid>
以上不工作,我怀疑这可能是严重的错误,但希望表明什么,我试图实现。 SelectedTableName
属性是一个字符串,其中包含当前所选表的名称。
如何让DataGrid
使用我根据SelectedTableName
值提供的模板之一?