WPF Bindingの威力

Similar documents
XAML の勉強上要! WPF アプリケーションは作れます

DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別で

XAML Do-It-Yourself シリーズ 第 7 回テンプレート -1-

WPF アプリケーションの 多言語切替

INFRAGISTICS WPF 18.1 サービスリリースノート 2019 年 4 月 Infragistics WPF で実現する高度な BI ときれいなデスクトップ UI Infragistics WPF コントロールは 広範な機能を提供し 最小限の開発工数でアプリケーションの作成を可能にしま

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

WPFの初歩の初歩

WPF アプリケーションの 多言語切替

グラフィックス 目次

mazec テクニカルガイド第5版(Android版)

WPF アプリケーションの 多言語切替

Microsoft PowerPoint - Windows Presentation Foundation (WPF) 3.5 の新機能

目次 1 はじめに WPF とは データバインディング バインディングモード コンバータ コマンド コレクションのデータバインディング 依存関係プロパティ...

PowerPoint プレゼンテーション

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加

xaml #xaml

わんくま同盟 大阪勉強会 #1

Web フォームアプリケーション開発基礎

Seasar.NET入門

WPF/Silverlightのスタイルやアニメーション

データアダプタ概要

テキストファイルの入出力1

新しいイテレーション型開発

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

プログラミング入門1

スライド 1

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

MVP for VB が語る C# 入門

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

intra-mart Accel Platform — IM-BloomMaker プログラミングガイド   初版  

ListViewコントロール

intra-mart Accel Platform

FileExplorer for ASP.NET Web Forms

プログラミング基礎I(再)

HTTP 404 への対処

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

Userコントロール

mySQLの利用

Microsoft認定資格問題集(70-483_demo)

JavaScript 演習 2 1

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB

JavaScript演習

PowerPoint プレゼンテーション

SpringSecurity

COMを応用してExcelをコントロール

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

ArcGIS Runtime SDK for .NET アプリケーション配布ガイド

JAVA入門

Silverlight を使用したデータアプリケーション開発手順

構造体

WebReportCafe

wpf #wpf

WTM2019SingleSignOn

PowerPoint プレゼンテーション

INFRAGISTICS WPF 17.2 サービスリリースノート Infragistics WPF で実現する高度な BI ときれいなデスクトップ UI Infragistics WPF コントロールは 広範な機能を提供し 最小限の開発工数でアプリケーションの作成を可能にします 高速パフォーマンス

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

スライド 1

Transcription:

WPF Binding の威力 えムナウ ( 児玉宏之 ) Microsoft MVP for Visual- Developer C# 2005/01-2007/12

アジェンダ はじめに Bindingの概要 データソース データ変換 データ検証

はじめに Windows Presentation Foundation (WPF) データバインディングは アプリケーションがデータを提供し 柔軟な UI 表現 ビジネスロジックと UI の明確な分離を実現します データフローの方向やソースの更新の要因を選択し表示のためのデータ変換や格納時のデータの検証を行えます コレクションへのバインドで並べ替え フィルタ処理 グループ化を行えます

Binding オブジェクト <Window.Resources> Binding の概要 <src:person x:key= mydatasource PersonName= えムナウ "/> </Window.Resources> <TextBlock Text="{Binding Source={StaticResource mydatasource}, Path=PersonName}"/> TextBlock MyDataSource (Person クラス ) Text プロパティ Binding オブジェクト PersonName プロパティ

データフローの方向 Binding の概要 ターゲット Dependency Property Binding オブジェクト BindingMode プロパティ OneTime OneWay TwoWay OneWayToSource ソース Property BindingMode で Default はテキストボックスやチェックボックスなど編集可能な場合は TwoWay それ以外のほとんどのプロパティは OneWay

ターゲット更新要因 Binding の概要 ターゲット Dependency Property Binding オブジェクト BindingMode プロパティ OneTime OneWay TwoWay ソース Property OneTime はアプリケーションの起動時またはデータコンテキストの変更時 OneWay TwoWay はプロパティ変更時

ソースの更新要因 Binding の概要 ターゲット Dependency Property Binding オブジェクト BindingMode プロパティ TwoWay OneWayToSource ソース Property Binding.UpdateSourceTrigger プロパティ PropertyChanged の場合ターゲットプロパティ変更時 LostFocus の場合ターゲットがフォーカスを失った時 Explicit の場合アプリケーションが UpdateSource を呼び出した時

Binding の概要 バインディングソース指定方法の種類 Binding.Sourceプロパティソースを直接指定します Binding.RelativeSourceプロパティターゲットの位置を基準にしてソースを指定します Binding.ElementNameプロパティ別の要素のプロパティをソースに指定します 自分や親要素のDataContextプロパティ複数のプロパティを共通のソースに指定します

DataContext 顧客 ListView.DataContext ( 親要素 ) TextBlock.Text プロパティ TextBlock.Text プロパティ TextBlock.Text プロパティ TextBlock.Text プロパティ TextBlock.Text プロパティ TextBlock.Text プロパティ Binding の概要 代入 Binding オブジェクト Binding オブジェクト Binding オブジェクト Binding オブジェクト Binding オブジェクト Binding オブジェクト 顧客クラスインスタンス ID プロパティふりがなプロパティ氏名プロパティ誕生日プロパティ都道府県 ID プロパティ郵便番号プロパティ

Binding の概要 MultiBinding オブジェクト 複数の Binding オブジェクトから渡るデータを元に Converter でターゲットに渡す値を決定します PriorityBinding オブジェクト 複数の Binding オブジェクトをリスト内の順番にたどって最初の有効な Binding オブジェクトを使用します DependencyProperty.UnsetValue を返す場合が無効値です

Binding の概要 DEMO

データソース Expression Blend のデータソース XML データソース XML 形式のデータを提供できるローカルまたはリモートの XML ファイル 共通言語ランタイム (CLR) オブジェクトデータソース ObservableCollection クラスが提供 IEnumerable インターフェイスと INotifyCollectionChanged インターフェイスを実装したクラス

データソース WPF のバインディングソース Expression Blend のデータソースの 2 つ ADO.NET データ ADO.NET DataView は IBindingList を実装し バインディングエンジンがリッスンする変更通知を提供 DependencyObject 任意の DependencyObject の依存関係プロパティにバインド コントロールのプロパティ間のバインディングに主に使用 Blend ではプロパティウィンドウからデータバインドで設定可能

データソース Expression Blend の DataSet の対応 型つきの DataSet でも Blend ではデータソースとして認識されない ObservableCollection<DataSet1. 顧客 Row> とかを作成すれば認識される しかし VisualStudio でプログラムから DataContext に設定すれば利用できる

GridView データソース ListView の表示モードを指定する View プロパティに GridView オブジェクトを設定することで DataGridView に近い表現と入力が可能 GridViewColumn でカラムを指定する CellTemplate や HeaderTemplate でヘッダーやセルの表示形式を変更 HeaderContainerStyle でヘッダーの表示形式を変更

DataTemplate データソース データオブジェクトの視覚化を表現するのに作成する DataGridView ではできなかった 2 段表示も可能 <DataTemplate x:key=" 氏名 HeaderCell"> <StackPanel> <TextBlock Text=" ふりがな " HorizontalAlignment="Center"/> <TextBlock Text=" 氏名 " HorizontalAlignment="Center"/> </StackPanel> </DataTemplate>

ControlTemplate データソース コントロールのビジュアル構造を標準から変更するときに使用 少し拡張する場合にも <ControlTemplate x:key="validationtemplate"> <DockPanel> <AdornedElementPlaceholder/> <Image Source="Imeges error.ico" Width="20" Height="20"/> </DockPanel> </ControlTemplate>

データソース DEMO

データ変換 データ変換 データ検証 今までは WindowsForms では Format プロパティを指定することでデータ変換を処理 WPF はデータ変換用のクラスを準備 データ変換パラメータ Binding.ConverterParameter でパラメータを指定 データ変換時にパラメータを指定できることでいろいろな応用が可能になる

データ変換の実装 データ変換 データ検証 IValueConverter インターフェースを実装して Convert( ソースからターゲットに変換 ) ConvertBack( ターゲットからソースに変換 ) のメソッドを作成 public object Convert(object value, Type targettype, object parameter, System.Globalization.CultureInfo culture) public object ConvertBack(object value, Type targettype, object parameter, System.Globalization.CultureInfo culture)

データ変換 データ検証 クイズです 何のコンバーターでしょうか? public object Convert(object value, Type targettype, object parameter, System.Globalization.CultureInfo culture) { string valuetext = ((int)value).tostring(); if (valuetext == (string)parameter) return true; return false; } public object ConvertBack(object value, Type targettype, object parameter, System.Globalization.CultureInfo culture) { } if ((bool)value) { } int selectvalue; int.tryparse((string)parameter, out selectvalue); return selectvalue; return DependencyProperty.UnsetValue;

データ検証 データ変換 データ検証 Binding.ValidationRules コレクションの中に ValidationRule クラスから派生させたデータ検証用のクラスを作成 データ検証用のクラスで Validate メソッドをオーバーライド public override ValidationResult Validate(object value, CultureInfo cultureinfo)

検証結果の表示 データ変換 データ検証 TextBox.Validation.ErrorTemplate に ControlTemplate を割り当てて エラーがあったときだけエラー表示を拡張 Validation.HasError や Validation.Errors も利用可能 Validation.ErrorTemplate などは添付プロパティなので TextBox の HELP にのっていないので注意が必要

データ変換 データ検証 DEMO