![]()
![]()
![]()
以上で、ListView 内に GridView が配置され、GridViewColumn が一つ作成されています。この GridViewColumn の CellTemplate に対して、DataTemplate を適合させてデータバインドを行います。 DataTemplate(2列ぶん)
<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="ListImageTemplate">
<StackPanel
HorizontalAlignment="Left"
Width="60">
<Image
Source="{Binding image}"
Width="50"
Height="50" />
<TextBlock
Text="{Binding screen_name}"
TextWrapping="Wrap"
Padding="4" />
</StackPanel>
</DataTemplate>
<DataTemplate
x:Key="ListDataTemplate">
<StackPanel
Margin="0,0,0,17"
Width="250">
<Border
BorderThickness="1"
BorderBrush="Black"
Padding="4">
<TextBlock
Text="{Binding name}"
TextWrapping="Wrap" />
</Border>
<TextBlock
Text="{Binding text}"
TextWrapping="Wrap"
Padding="3" />
</StackPanel>
</DataTemplate>
</Window.Resources>
ListView に対する設定
<ListView
Grid.Row="1"
Height="227"
HorizontalAlignment="Left"
Margin="23,13,0,0"
Name="listView1"
VerticalAlignment="Top"
Width="459"
ItemsSource="{Binding statuses}">
<ListView.View>
<GridView>
<GridViewColumn
CellTemplate="{StaticResource ListImageTemplate}" />
<GridViewColumn
CellTemplate="{StaticResource ListDataTemplate}" />
</GridView>
</ListView.View>
</ListView>
バインド用のグループクラス
using System;
using System.ComponentModel;
using System.Collections.ObjectModel;
namespace WpfApp1
{
public class MainViewModel {
public MainViewModel() {
this.statuses = new ObservableCollection<ItemViewModel>();
}
public ObservableCollection<ItemViewModel> statuses { get; set; }
}
}
バインド用の明細クラス
using System;
using System.ComponentModel;
using System.Linq.Expressions;
namespace WpfApp1
{
public class ItemViewModel : INotifyPropertyChanged {
public string image { get; set; }
public string text { get; set; }
public string name { get; set; }
public string screen_name { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(String propertyName) {
PropertyChangedEventHandler handler = PropertyChanged;
if (null != handler) {
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}
データのロード部分
MainViewModel mvm = new MainViewModel();
mvm.statuses.Add(new ItemViewModel() {
image = "https://lh3.googleusercontent.com/-1n_3a1aPisc/UNSrq1LzhpI/AAAAAAAAKdA/qMQKXmdZlf4/s200/freefont_hanko_ume-pgo4.png",
screen_name = "sworc",
name = "夜歩き",
text = "ListView に GridView を実装する手順"
});
this.listView1.DataContext = mvm;
|
|
【C#の最新記事】
- C# : PHP と連携してバイナリデータを WebClient.UploadDataAsync でそのままアップロードする
- C# : WebClient で JSON データを取得後 Json.NET でオブジェクト化( ついでに PropertyInfo でプロパティデータ一覧を foreach で取得 )
- C# : Microsoft Access の接続で、他の RDBMS( ここでは MySQL ) にエクスポートを行う
- C# : TKMP.DLLを使った、Gmail 用メール送信テンプレート
- C# : DataGridView を使用したナチュラルな行データの更新
- C# の delegate : メソッドの引数にメソッドを渡して使用する方法と、JavaScript の function(){} と同じ使用方法( 匿名 )
- PowerShell 移行用 C# コンソールアプリのコードテスト( ZIP 圧縮 )
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (4)
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (3)
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (2)
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (1)
- ComboBox : C# : Form アプリケーションで良く使うコントロール / VS2012 にて
- C# バッチビルドキットで、VB の My 名前空間を使ってクリップボードを使ったり、キーボードの SHIFT キーが押されているかを知る
- printui.dll を VB.net または C# から呼び出す/ DllImport で LoadLibraryA / VS2010
- LINQ で List
のソート - Windows ストア用の System.Collections.Generic 名前空間には、SortedList はありません。
- 情報が全くみつからない Microsoft.Live
- VS2010(C#) バッチ(コンソールアプリ) Twitter 投稿
- Windows8(C#) の WebView の LoadComplete で取得した URL 内のアクセストークンを Split で取得
- Facebook C# SDK の 5.4.1.0 のダウンロード







以上で、ListView 内に GridView が配置され、GridViewColumn が一つ作成されています。この GridViewColumn の CellTemplate に対して、DataTemplate を適合させてデータバインドを行います。
DataTemplate(2列ぶん)





















