我知道这个问题之前已经回答过,但是看看他们中的大多数,他们使用后面的代码,我理解在 MVVM 中永远不行,其他人也使用 MVVM 模式。我拒绝使用模式,因为我想从头开始学习。我能够正确绑定(bind) ItemsSource 但如何绑定(bind)到数据网格标题等。
我认为这很常见,但我想要的是能够拥有一个带有标题的数据“表”。我希望用户能够右键单击标题行并关闭和打开列。那部分我并不担心弄清楚该怎么做。
我在问如何在没有代码隐藏或框架的情况下拥有一个具有动态列/标题的数据网格。我不确定如何从 View 模型绑定(bind)到数据网格。
最佳答案
<DataGrid AutoGenerateColumns="False" Height="256" HorizontalAlignment="Left" Name="dgEmp" VerticalAlignment="Top" Width="490" ItemsSource="{Binding DeleteData,Mode=TwoWay}" Margin="6,7,0,0" Grid.RowSpan="3">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID,Mode=TwoWay}" IsReadOnly="True" Visibility="Hidden"/>
<DataGridTextColumn Header="Description" Binding="{Binding Description,Mode=TwoWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Amount" Binding="{Binding Amount,Mode=TwoWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Date" Binding="{Binding Date,Mode=TwoWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Remark" Binding="{Binding Remark,Mode=TwoWay}" IsReadOnly="True"/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Update" x:Name="btnUpdate"
Click="btnUpdate_Click"></Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
在此示例中,DataGrid 的 ItemSource 是 DeleteData,它是一个
ObservableCollection<Expense_Submit>
Expense_Submit 是我定义了所有属性的一类。它看起来像
public class Expense_Submit
{
private int _ID;
private string _UserID;
private string _Description;
private string _Amount;
private DateTime _Date;
private string _Remark;
}
关于c# - 动态数据网格,可选列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606820/