忍者ブログ
2009/12/12作成
未選択
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

[WPF]ViewModelを介してDataGridにバインディングする
○XAML
赤字で、ViewModelのプロパティと紐付けを行う。
青字・緑時で、赤字で紐付けしたプロパティ(DataTable)の列名と紐付けを行う。

<Window x:Class="WpfDataGrid.BindingWithViewModel.TestWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TestWindow" Height="300" Width="300" Loaded="Window_Loaded">
    <Grid>
        <DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left"
                  Name="dataGrid1" VerticalAlignment="Top" ItemsSource="{Binding DataTable}">
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="Column1" Binding="{Binding Path=col1}" Width="100" />
                <DataGridTextColumn x:Name="Column2" Binding="{Binding Path=col2}" Width="100" />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>



○ViewModel

using System.Data;

namespace WpfDataGrid.BindingWithViewModel
{
    class ViewModel
    {
        public DataTable DataTable { get; set; }
    }
}



○コードビハインド
水色でViewModelを設定する。

using System.Windows;
using System.Data;

namespace WpfDataGrid.BindingWithViewModel
{
    /// 
    /// TestWindow.xaml の相互作用ロジック
    /// 

    public partial class TestWindow : Window
    {
        public TestWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("col1");
            dt.Columns.Add("col2");
            dt.Rows.Add("1", "One");
            dt.Rows.Add("2", "Two");
            ViewModel vm = new ViewModel();
            vm.DataTable = dt;
            DataContext = vm;
        }
    }
}


PR
Powered by [PR]
/ Design by sky hine / PR:忍者ブログ