WPF使用非同步繫結資料

2021-08-25 20:03:45 字數 2980 閱讀 5472

1. wpf的xaml方式非同步繫結:

step1:定義獲取資料的方法,這裡以省市縣作為例子

code:

classregiondao

publiclistgetcitiesfromprovince(int?pid)

listlist=entity.cities.where(c=>c.provinceid==pid).tolist();

returnlist;

}publiclistgetcountiesfromcity(int?cid)

listlist=entity.counties.where(c=>c.cityid==cid).tolist();

returnlist;}}

step2:在xaml定義資料獲取,這裡使用objectdataprovider,注意獲取城市的方法引數是int?,但是xmal中不能如此定義,就以0作為初始值,反正0也查不到資料,但是如果0可以查到資料,那麼你要考慮其他方式了。

code:

<

window.resources

>

<

objectdataprovider

x:key="data_province"

objecttype=""

methodname="getallprovince"

isasynchronous="true"

/>

<

objectdataprovider

x:key="data_city"

objecttype=""

methodname="getcitiesfromprovince"

>

<

objectdataprovider.methodparameters

>

<

sys:int32

>0

sys:int32

>

objectdataprovider.methodparameters

>

objectdataprovider

>

<

objectdataprovider

x:key="data_county"

objecttype=""

methodname="getcountiesfromcity"

>

<

objectdataprovider.methodparameters

>

<

sys:int32

>0

sys:int32

>

objectdataprovider.methodparameters

>

objectdataprovider

>

<

objectdataprovider

x:key="data_workshop"

objecttype=""

methodname="getworkshopfromregion"

>

<

objectdataprovider.methodparameters

>

<

sys:int32

>0

sys:int32

>

<

sys:int32

>0

sys:int32

>

<

sys:int32

>0

sys:int32

>

objectdataprovider.methodparameters

>

objectdataprovider

>

window.resources

>

step3:定義combobox控制項,注意要設定displaymemberpath顯示的內容,以及selectedvaluepath選中的內容

code:

""name="cboprovince"grid.row="0"grid.column="1"

itemssource="}"displaymemberpath="provincename"selectedvaluepath="provinceid"selectionchanged="cboprovince_selectionchanged"/>

""name="cbocity"grid.row="1"grid.column="1"

itemssource="}"displaymemberpath="cityname"selectedvaluepath="cityid"selectionchanged="cbocity_selectionchanged"/>

""name="cbocounty"grid.row="2"grid.column="1"

itemssource="}"displaymemberpath="countyname"selectedvaluepath="countyid"/>

step4:部分後置**,作用是當選中省時,取得combobox的selectedvalue值作為查詢城市的引數

code:

private

voidcboprovince_selectionchanged(objectsender,selectionchangedeventargse)

}private

voidcbocity_selectionchanged(objectsender,selectionchangedeventargse)

}2. 如果使用**方式來進行繫結也很簡單

code:

publicpartialclassucviewstudents:usercontrol

}但是有個問題是資料繫結不是非同步的,如果資料量大需要全部拿到後才顯示,需要非同步繫結資料

code:

publicpartialclassucviewstudents:usercontrol

}

WPF 資料繫結 資料模板介紹

實現效果 列出任務項資料,由普通資料模板顯示一般資訊,重要任務項則只顯示大寫文字描述。若任務項的型別為home,由資料模板的邊框改變成黃色,其他任務只大寫顯示文字 根據選定的任務項由資料模板展示其詳細資訊 實踐 datatemplate.triggers資料模板觸發器 itemtemplatesel...

WPF繫結資料來源之RelativeSource

一.findancestor 有時候我們不確定作為資料來源的物件叫什麼名字,但知道作為繫結源與ui布局有相對的關係,如下是一段xaml 說明多層布局控制項中放置乙個文字控制項,來顯示父級控制項的名稱。1 xaml html 2 後台 csharp relativesource rs new rela...

flex繫結資料

在使用flex開發的過程中,資料繫結是一定會遇到的,這種技術簡單,又有點好玩,重要的是它讓開發變得簡單了。在flex中,資料繫結的方式有這麼三種 示例1中的繫結方式即是第一種繫結方式,在 中直接填寫inputunit.text,表示label顯示的內容和textinput是關聯的,它會隨著texti...