1

我知道这个问题之前已经回答过了,但是看看他们中的大多数,他们使用后面的代码,我理解在 MVVM 中永远不会好,其他人也使用 MVVM 模式。我拒绝使用模式,因为我想从头开始学习。我能够正确绑定 ItemsSource 但如何绑定到数据网格标题等。

我认为这很常见,但我想要的是能够拥有一个带有标题的数据“表”。我希望用户能够右键单击标题行并关闭和打开列。那部分我并不担心弄清楚该怎么做。

我在问如何在没有代码隐藏或框架的情况下拥有一个具有动态列/标题的数据网格。我不确定如何从视图模型绑定到数据网格。

4

2 回答 2

0
 <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;


  }
于 2012-09-26T17:18:19.333 回答
0

为此,您必须绑定可见性属性。

Visibility={binding IDVisibile,mode=TwoWay}

在您的 ViewModel 创建一个属性

 private Visibility _IDVisibile;

            public Visibility IDVisibile
            {
                get { return _BorderVisibility; }
                set { _BorderVisibility = value; RaisePropertyChanged("IDVisibile"); }
            }
于 2012-09-26T17:40:36.037 回答