機能を結合WPFのデータを提供しながら、Windows Presentation Foundation(WPF)を使用すると、簡単に強力なユーザーインターフェースを設計することができます。XAMLを結合するフロントによって背後にあるコード、またはデータバインディング両方の方法の組み合わせを結合する同様のWPFのWinフォームに結合機能をASP.NETデータとデータバインディングだけでなく、WPFで異なりますセット。あなたはWinフォームやASP.NET、でより速く、より柔軟かつ簡単な比較WPFに結合コントロール、公共の財産、XMLやオブジェクトデータをバインドすることができます。
まず、データバインディングは何ですか
WPFデータバインディング、それが標的結合を持っている必要がありますし、データソースをバインドします。結合標的は、TextBoxコントロールのTextプロパティなどの任意のDependencyPropertyからアクセスプロパティまたはコントロールを継承することができます。データ・ソースは、他のコントロールのプロパティとすることができる、それはオブジェクトのインスタンス、XAML要素、ADO.NETデータセット、XMLデータであってもよいです。マイクロソフトのXMLバインディングとバインディングオブジェクトに対して、それは2つのヘルパークラスのにXmlDataProviderやたObjectDataProviderを提供します。
何が違うの結合WPFでデータバインディングとASP.NETとWinフォームデータ?最大の違いは、WPFは、{バインディング...}文を使用していることです。
結合は、バックグラウンドデータ・インターフェース・コントロールとの結合性を達成するために使用され、この形式でインターフェースの目的に関連したフロントインターフェースおよび背景データは、データに連結されています。
WPFは、結合オブジェクトから次の情報を取得するためにエンジンを結合します。
ソースとターゲットオブジェクト。
データフローの方向。あなたはBinding.Modeプロパティを設定することで、この方向を指定することができます。
値変換(存在する場合)。あなたは、プロパティクラス指定された値変換IValueConverterコンバータを実現するための一例として設定することができます。
次のようにWPFとの比較のASP.NETとWinフォーム結合方法は、いくつかの違いがあります。
(1)結合データインターフェースXAMLステートメントを結合することによって達成することができます。データのブリッジ結合の比率場合、それは、送信元と宛先の両端の結合です。ここで、データソースから来て、バインディングはどこへ行くターゲットへのデータバインディング、フレームの中央の橋です。データは、UI層を通って流れるように、一般に、論理層をバインディングソースオブジェクトは、制御オブジェクトは、ターゲットUI結合層で結合役立っUIプレゼンテーション層で、UIデータを駆動するプロセスを完了します。以下に。
(2)結合性結合を達成するための重要なモードでは、データフローを有しています。いくつかの特定があります。
メンバー名 |
説明 |
デフォルト |
結合標的のデフォルト値を使用してモード。各依存関係プロパティのデフォルト値は異なります。ほとんどの他のプロパティのデフォルトに対し一方向結合する双方向バインディングにデフォルト、一般的な、ユーザ編集可能な制御特性(例えば、テキストボックスやチェックボックスなどの特性)です。結合依存関係プロパティを決定することは、単方向または双方向のプログラミングで、デフォルトである:のgetMetaDataは、BindsTwoWayByDefaultブール属性を確認し、属性のメタデータを使用して属性を取得します。 |
一度 |
アプリケーションが起動またはデータコンテキストの変更、更新は、標的に結合されている場合。このバインディングタイプは、以下の条件に適用される:データまたは静的データの実際の状態を使用するための現在の状態のスナップショット。属性がターゲット属性値を持つソースから初期化した場合、データは事前に知られていないと文脈も、このバインディングタイプを使用することができます。結合のこのタイプは、実質的に単純化された形式の一方向のソースは、より良い性能を提供することができる値を変更しない場合には、結合です。 |
一方通行 |
場合バインディングソース(ソース)の変化は、結合標的(ターゲット)プロパティを更新します。このバインディングタイプは、暗黙的な読み取り専用の状況を制御する連結コントロールに適しています。例えば、ソースは、株価表示などにバインドすることができます。あるいは、標的とすることができるプロパティは、制御インタフェース(例えばテーブルの背景色データバインディングなど)の変更を行うために使用されていません。あなたはターゲットプロパティの変更を監視する必要がない場合は、一方向結合モードが双方向バインディングモードのオーバーヘッドを回避できます。 |
OneWayToSource |
ターゲットプロパティの変更はソースプロパティを更新します。 |
双方向 |
お互いを自動的に更新するために、ソースプロパティまたはターゲットプロパティの変更をもたらします。このバインディングタイプは、編集可能なフォームや他の完全にインタラクティブなUIプログラムに適しています。 |
(3)構成することができるトリガーは、ユーザが値のデータソースを変更するための入力インタフェースでデータを決定します。UpdateSourceTriggerプロパティは、によって達成することができ、いくつかの特定の値があります
メンバー名 |
説明 |
デフォルト |
targetプロパティ値を結合UpdateSourceTriggerのデフォルト。ほとんどの依存関係プロパティのデフォルト値は、のPropertyChangedされ、一方、テキスト のLostFocusのデフォルトプロパティ値。 依存関係プロパティUpdateSourceTriggerプログラミングデフォルト値を決定することは、プロパティのgetMetaDataのメタデータ属性を取得し、値DefaultUpdateSourceTriggerプロパティをチェックするために使用されます。 |
明示的な |
あなたがUpdateSourceメソッドを呼び出すだけでバインディングソースを更新します。 |
LostFocus |
標的結合要素がフォーカスを失ったとき、バインディングソースを更新します。 |
PropertyChanged |
バインディングターゲットプロパティの変更は、更新がすぐにソースをバインドするとき。 |
|
|
次のように具体的な使用方法は次のとおりです。
<テキストボックス名= "itemNameTextBox" テキスト= "{バインディングパス= ItemNameの、UpdateSourceTrigger =明示}" />
第二に、シンプルで結合します
次に、この結合によってListBoxコントロールのTextBlockに選択した値を表示する方法を示して非常に単純な結合の例の最初の例です。
まず、リストボックスのオプションとして、7 ListBoxItemにリストボックスを追加します。
其次,把第二个 TextBlock 的 Text通过 Binding 与 ListBox 选择项进行绑定。Binding 语法中的 ElementName 属性指示 TextBlock 的 Text 属性要与其绑定的控件的名称。Path 属性指示我们将绑定到Text属性上ListBox元素的属性。具体代码如下。
<Window x:Class="WpfApp1.WindowBindData" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WindowBindData" Height="400" Width="500"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="150"/> <RowDefinition Height="150"/> <RowDefinition Height="138*"/> </Grid.RowDefinitions> <StackPanel Grid.Row="0"> <TextBlock Width="248" Height="24" Text="股票名称:" TextWrapping="Wrap"/> <ListBox x:Name="listStockName" Width="248" Height="56"> <ListBoxItem Content="全通教育"/> <ListBoxItem Content="大智慧"/> <ListBoxItem Content="宝钢股份"/> <ListBoxItem Content="浦发银行"/> <ListBoxItem Content="工商银行"/> <ListBoxItem Content="中国建筑"/> <ListBoxItem Content="中国南车"/> </ListBox> <TextBlock Width="248" Height="24" Text="你所选中的股票名称:" /> <TextBlock Width="248" Height="24" Text="{Binding ElementName=listStockName, Path=SelectedItem.Content}"> </TextBlock> </StackPanel> </Grid> </Window>
效果如下图。
https://www.cnblogs.com/zzw1986/p/7583534.html