WPF雙向資料繫結總結

2021-09-07 20:27:07 字數 3365 閱讀 5426

參考官方:

例項程式:

1、指定繫結源

wpf雙向資料同步:目標屬性(ui)和源屬性(cs)資料同步。

實現雙向資料同步資料來源需要實現依賴屬性inotifypropertychanged介面,因為依賴屬性有垂直的內嵌變更通知機制。

inotifypropertychanged是用於實現介面通知。

dependencyobject是實現依賴物件的依賴屬性。

名空間:

using system.componentmodel;
實現依賴屬性inotifypropertychanged介面

using system;

using system.componentmodel;

namespace wpfbinding

set}

/// /// email

///

private string _email;

public string email

set}

protected internal virtual void onpropertychanged(string propertyname)

public event propertychangedeventhandler propertychanged;}}

2、mvvm架構,viewmodel初始化

namespace wpfbinding

public viewmodel()}}

3.1、互動邏輯,例項化資料(方式一)

using system;

using system.windows;

namespace wpfbinding

; };}}

}

3.2、xaml繫結資料(方式一)

4.1、互動邏輯,例項化資料(方式二)

using system.windows;

using system.windows.controls;

using system.windows.data;

namespace wpfbinding

; //繫結依賴屬性name

txtname.setbinding(textbox.textproperty, new binding("name") );

//繫結元素屬性text

lblname.setbinding(contentproperty, new binding("text") );

//繫結依賴屬性email

txtemail.setbinding(textbox.textproperty, new binding("email") );

//繫結元素屬性text

lblemail.setbinding(contentproperty, new binding("text") );};}

}}

4.2、xaml元素(方式二)  

5.1、binding物件的屬性說明

屬性名                 描述        

1、converter:轉換器,將繫結的內容轉換成自己需要的內容。自定義轉換類 必須繼承於:ivalueconverter介面

2、elementname:繫結的源物件,本人理解 專程用於ui控制項之間屬性的繫結

3、fallbackvalue :繫結無法返回有效值時的預設顯示值

4、mode:繫結方式,列舉型別 default oneway twoway onetime onewaytosource

5、path:屬性 路徑,用來指定要繫結資料來源的路徑,其性質是乙個屬性,該屬性該當是依靠屬性,也即便能夠告終積極更新機制的【單個類實現inotifypropertychanged、集合要 實現inotifycollectionchanged介面】

6、relativesource:常用於自身繫結或者資料模板中來指定繫結的源物件及控制項模組中的繫結。

7、source:源物件,控制項或自定義物件等。

8、stringformat:格式化表示式

9、updatesourcetrigger:在雙向繫結時twoway 或 onewaytosource 時。用來確定屬性更改的時機。updatesourcetrigger列舉型別:default,propertychanged,lostfocus,explicit。

10、validationrules:驗證規則.可以被設定為乙個或多個派生自validationrule的物件,每個規則都會檢查特定的條件並更具結果來標記資料的有效性

5.2、mode指定繫結的方向

資料繫結模式共有四種:onetime、oneway、onewaytosource和twoway,預設是twoway。

twoway 當發生更改時的目標屬性或源屬性更新目標屬性。

oneway 僅當源屬性更改時,請更新目標屬性。

onetime 僅當應用程式啟動時或時,請更新目標屬性datacontext發生了更改。

onewaytosource 目標屬性更改時,請更新源屬性。

default 預設值將導致mode要使用的目標屬性的值。

5.3、updatesourcetrigger    四種用來確定屬性更改的時機,對於 model=twoway 及 onewaytosource是源資料改變時機。

6、ui屬性繫結資料物件。

6.1 、ui屬性直接繫結例項物件 。例項:text=""

6.2 、ui屬性直接繫結靜態物件。例項:datacontext=""

6.3 、ui屬性繫結資源中的物件。datacontext=""

7、清除繫結

bindingoperations.clearbinding(txtblock, textblock.textproperty);
8、集合雙向繫結

wpf 提供 observablecollection類,它是實現 inotifycollectionchanged 介面的資料集合的內建實現。

public class users : observablecollection

}

WPF資料雙向繫結

設定雙向繫結,首先控制項要繫結的物件要先繼承乙個介面 inotifypropertychanged 然後對應被繫結的屬性增加 如下 意思就是當age這個屬性變化時,要通知監聽它變化的人。即 propertychanged this,new propertychangedeventargs age p...

wpf雙向資料繫結跟使用者控制項

12.23 今天上午終於把自己的雙向資料繫結資料庫給弄出來了.原來是我有兩句code位置寫反了,結果導致怎麼也無法更改資料庫資料,今天費了好大的事才找到錯誤.原來錯誤很有可能發生在你最不注意的地方,以後出現錯誤一定要自己好好找找,好好想想 出錯了.上午還做的一點事就是找到了自己使用者控制項不能訪問內...

WPF之資料繫結總結

最近幾天高強度開發,暴露出不少問題,wpf還達不到信手拈來的地步,好些東西還要去看看以前的專案。平時還是要多總結的,層次高了之後關注的知識點才會更深入。下面總結下wpf的繫結相關,總結之前又看了一遍深入淺出wpf,結合平時用到的得出此文 以textbox為例,覆蓋常見的需求,其他控制項類似,1.te...