一種應用方法是使用依賴項屬性代替inotifypropertychanged介面,將介面繫結的資料來源屬性宣告為依賴項屬性,就可以自動更新到介面了,使用了wpf的內建機制,之前有一篇文章寫了乙個例子。
今天寫的應用是重寫乙個控制項,新空間使用依賴項屬性來擴充套件wpf內建控制項的功能,不過我的這個控制項更多是為了方便使用,類似於是老控制項的乙個物件,只用於某種特殊的表示方式,**於一道面試題,兩個combobox,乙個是省名稱,乙個是市名稱,當省的combobox選項改變時,市combobox列表也隨之改變,用依賴項屬性實現。
首先來展示一下,如果不使用依賴項屬性,正常的做法
宣告兩個combobox,乙個是省,乙個是市
後台資料結構:
public class notifypropertychangebase : inotifypropertychanged}}
//這個省資料使用依賴項屬性實現,是之前提到的依賴項屬性的一種應用 方法
public class provienceinfo : dependencyobject
private int id;
public int id
}get
}public string name
}get
}private citylist citys;
public citylist citys
set}}}
//市使用notify介面實現
public class cityinfo : notifypropertychangebase
private string name;
public string name
}get}}
public class proviencelist : observablecollection
public class citylist : observablecollection
專門為ui提供資料的資料類
public class data
;string cityarrar = new string[3];
string hebeicity= ;
string henancity = ;
string shandongcity = ;
cityarrar[0] = hebeicity;
cityarrar[1] = henancity;
cityarrar[2] = shandongcity;
for (int i = 0; i < 3; i++)
pi.citys = cl;}}
proviencelist proviences;
public proviencelist proviences
set}
}後台的資料來源繫結
public mainwindow()
//當省級的combobox選項改變的時候變更市級combobox的資料來源
private void combobox_selectionchanged(object sender, selectionchangedeventargs e)
這樣就可以實現功能了。
如果使用依賴項屬性,我建立了乙個新類,擴充套件combobox,該類中有乙個citylist屬性,使用者只需要給改屬性賦值或繫結,就可以顯示
public class mycombobox : combobox
}public mycombobox()
public citylist citylist
set}}
前台xaml,只需設定citylist
資料來源中新增乙個citys的資料,因為mycombobox中需要繫結,此處省略。
當省的選項改變時,只需改變mycombobox的citylist
private void combobox_selectionchanged(object sender, selectionchangedeventargs e)
此處依賴項屬性的應用只是更方便的為使用者提供功能,並沒有擴充套件,要想真正擴充套件控制項的功能,恐怕要做的還有很多。
不知此處的應用是否正確,合理,符合依賴項屬性的目的,如有高見,請不吝賜教。
WPF 用依賴屬性實現乙個連鎖的依賴關係
如果我們要實現 乙個自定義物件o的某個屬性依賴到控制項c1上,同時,當這個物件的這個屬性發生變化時,關注此物件的控制項c2的顯示內容也要改變,這看起來就像是乙個連鎖反應 c2依賴於o,o依賴於c1。要實現這個功能我們先實現c2依賴於o這一部分。既然o這個物件要讓其他控制項依賴,那麼o必須在自己的屬性...
WPF中的依賴項屬性
已經學習了好幾天了,乙個小例子讓我豁然開朗,以下是我個人的一點理解 由於wpf由xaml檔案和c 檔案組成的,c 負責邏輯處理,所以很多控制項屬性就會別修改,此時我們希望他能夠反映到介面上,依賴項屬性就能夠做到這點。當然系統的控制項的一般的屬性都是依賴性的,我們不必擔心,但在資料繫結的時候,我們會經...
檢視乙個庫的依賴
經常需要檢視乙個可執行檔案或者庫依賴那些庫檔案。通常情況下這很好辦,使用ldd命令就可以了,比如 1 2 3 4 5 6 ldd bin bash linux vdso.so.1 0x00007ffd8ffef000 libtinfo.so.5 lib x86 64 linux gnu libtin...