乙個依賴項屬性的應用

2021-06-09 22:31:06 字數 2063 閱讀 9052

一種應用方法是使用依賴項屬性代替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...