SkyDrive へ移動 ※ Window の背景にイラスト画像を使用しています DataGrid の重要なプロパティItemsSource="{Binding mail_data}" AutoGenerateColumns="True" CanUserAddRows="false"MainWindow.xaml
<Window x:Class="WPF_MailGet.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Title="MainWindow" Height="719" Width="805" BorderBrush="Black" BorderThickness="1"> <Window.Background> <ImageBrush ImageSource="/WPF_MailGet;component/Images/back_001.jpg" Stretch="UniformToFill" TileMode="None" /> </Window.Background> <!-- このウインドウのリソース --> <Window.Resources> <Style TargetType="{x:Type ListView}"> <Setter Property="ItemContainerStyle"> <Setter.Value> <Style TargetType="ListViewItem"> <Setter Property="VerticalContentAlignment" Value="Top" /> </Style> </Setter.Value> </Setter> </Style> <!-- 一覧データ 用の表示部品定義 --> <DataTemplate x:Key="ListFromTemplate"> <StackPanel HorizontalAlignment="Left" Width="60"> <TextBlock Text="{Binding from}" TextWrapping="Wrap" Padding="4" /> </StackPanel> </DataTemplate> <DataTemplate x:Key="ListSubjectTemplate"> <StackPanel Margin="0,0,0,17" Width="250"> <Border BorderThickness="1" BorderBrush="Black" Padding="4" Height="50"> <TextBlock Text="{Binding subject}" TextWrapping="Wrap" /> </Border> </StackPanel> </DataTemplate> </Window.Resources> <Grid AllowDrop="True"> <Grid.RowDefinitions> <RowDefinition Height="70*" /> <RowDefinition Height="608*" /> </Grid.RowDefinitions> <!--実行ボタン--> <Button Name="actButton" Content="データ表示" Height="35" HorizontalAlignment="Left" Margin="40,26,0,0" VerticalAlignment="Top" Width="154" Click="actButton_Click" /> <!--一覧表示--> <DataGrid Grid.Row="1" Height="534" HorizontalAlignment="Left" Margin="40,0,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="700" Background="#C5FFFFFF" MouseDoubleClick="dataGrid1_MouseDoubleClick" ItemsSource="{Binding mail_data}" AutoGenerateColumns="True" CanUserAddRows="false" IsReadOnly="True"> <!--<DataGrid.Columns> <DataGridTemplateColumn Header="差出人" CellTemplate="{StaticResource ListFromTemplate}"> </DataGridTemplateColumn> <DataGridTemplateColumn Header="件名" CellTemplate="{StaticResource ListSubjectTemplate}"> </DataGridTemplateColumn> </DataGrid.Columns>--> </DataGrid> </Grid> </Window>
コメント部分は、カラムをテンプレートで作成してカスタマイズする場合に使用します。 MainWindow.xaml.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Net; using System.Windows; using System.Windows.Input; using System.Collections.ObjectModel; namespace WPF_MailGet { public partial class MainWindow : Window { private MainViewModel mvm = new MainViewModel(); // ********************************************* // コンストラクタ // ********************************************* public MainWindow() { InitializeComponent(); this.dataGrid1.DataContext = mvm; } private void actButton_Click(object sender, RoutedEventArgs e) { mvm.mail_data.Add(new ItemViewModel() { from = "Button@event.DataGrid.wpf", subject = "DataGrid は自動カラム作成が有効です", mdate = "2013/10/26 19:00:30", }); } private void dataGrid1_MouseDoubleClick(object sender, MouseButtonEventArgs e) { Debug.WriteLine(dataGrid1.SelectedIndex); mvm.mail_data.Add(new ItemViewModel() { from = "DoubleClick@event.DataGrid.wpf", subject = "CanUserAddRowsは、\n意図的に false にする必要があります", mdate = "2013/10/26 19:00:30", }); mvm.mail_data[0].mdate = "0000/00/00"; } } }
MainViewModel.cs
using System; using System.ComponentModel; using System.Collections.ObjectModel; namespace WPF_MailGet { // ********************************************* // バインドする一覧データのを定義するクラス // ********************************************* public class MainViewModel : MainBaseModel { // ***************************************************** // コンストラクタ // ***************************************************** public MainViewModel() { mail_data = new ObservableCollection<ItemViewModel>(); } // ***************************************************** // バインド用のコレクションのプロパティ // ***************************************************** public ObservableCollection<ItemViewModel> mail_data { get; set; } } }
ItemViewModel.cs
using System; using System.ComponentModel; namespace WPF_MailGet { // ********************************************* // バインドする一覧データの構造を定義するクラス // ********************************************* public class ItemViewModel : ItemBaseModel { // ********************************************* // from エントリ // ********************************************* private string _from; public string from { get { return _from; } set { SetAndNotifyString(GetName(() => from), ref _from, value); } } // ********************************************* // subject エントリ // ********************************************* private string _subject; public string subject { get { return _subject; } set { SetAndNotifyString(GetName(() => subject), ref _subject, value); } } // ********************************************* // mdate エントリ // ********************************************* private string _mdate; public string mdate { get { return _mdate; } set { SetAndNotifyString(GetName(() => mdate), ref _mdate, value); } } } }
|
【VS(C#)の最新記事】
- Replit : cs-list
- C# : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する
- C#( Form ) : ウインドウ枠の無い吹き出しの作成
- C# のタプル( Visual Studio 2017 でテスト )
- C# : インターネット上の JSON ファイルのフォーマットを クラスとして定義して1行でオブジェクト化して使用する
- C# の文法的文字列処理
- C# : System.Data.Odbc によるデータベースのテーブルからのデータ取得処理( サンプルの SQL は MySQL 用です )
- C# : Excel を データベースとして DataGridView に読み込む
- C# : dynamic 型 による Excel へのアクセス
- C# : フォームを表示せずに、通知領域にアイコンを表示させる常駐プログラム
- Microsoft Access に対してSQLを入力してその結果を DataGridView に表示する最も簡単なコード
- C# : System.Data.Odbc データ取得(SELECT)処理( MySQL ) : ※ using 無し( Dispose 実行 )
- C# : SQL 文を外部テキストにして、String.Format でデータ部分を置き換えて利用する
- C# コンソールアプリを AN HTTPD で実行
- C# : SQLServer( SQLExpress ) の SMO を使用してテーブルの CREATE TABLE 文 を取得する
- C# : DataGridView に TKMP.DLL の IMAP(POP3) で受信したメールを非同期に表示する( 添付ファイルも取得 )
- C# : TKMP.DLLを使った、メール送信テンプレート
- C# と VB.net : TKMP.DLL を使って IMAP でメール本文の一覧を取得する( コンソール )
- C# でDataTable と DataSource を使用して、DataGridView にデータを表示するテンプレート( 行をダブルクリックしてダイアログを表示して行データを処理 )
- (C#) / VS2010 または VS2012 : TKMP.DLL(3.1.2 または 3.1.8)を使った、『さくらインターネット』用メール送信テンプレート