1

私はこの質問が以前に回答されたことを知っていますが、それらのほとんどを見ると、それらはコードビハインドを使用しており、MVVMでは決して大丈夫ではないことを理解しています。他の人もMVVMパターンを使用しています。ゼロから学びたいので、パターンの使用を拒否します。ItemsSourceを正しくバインドできますが、datagridヘッダーなどにバインドするにはどうすればよいですか。

これは一般的なことだと思いますが、私が望んでいるのは、ヘッダー付きのデータの「テーブル」を作成できるようにすることです。ユーザーがヘッダー行を右クリックして、列のオンとオフを切り替えることができるようにしたいと思います。その部分は、私がどのように行うかを理解することについてそれほど心配していません。

コードビハインドやフレームワークのない動的な列/ヘッダーを備えたデータグリッドを作成する方法を尋ねています。ビューモデルからデータグリッドにバインドする方法がわかりません。

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であり、これは1つです。ObservableCollection<Expense_Submit>

Expense_Submitは、すべてのプロパティを定義したという点で1つのクラスです。

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プロパティをバインドする必要があります。

Visibility={binding IDVisibile,mode=TwoWay}

ViewModelで1つのプロパティを作成します

 private Visibility _IDVisibile;

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