基於繼承類的屬性模版中無法繫結的原因和解決方法

2021-09-07 19:31:45 字數 1894 閱讀 3698

原文:

基於繼承類的屬性模版中無法繫結的原因和解決方法

這個的晚上想學學wpf 做乙個類似於erp 左邊選單。構思一下思路 。。。。。。

建立乙個類基於expander類。

1

public

class

expanderbox : expander216

set17}18

public

icommand itemscommand

1921

set22}23

24public

intheaderheight

2527

set28}29

#endregion

3031

//public expanderbox()

32//

3536

37 }

由於 expander中content中要放乙個listbox,所以定義了乙個依賴屬性itemssources,headerheight是頭部的高度。

後然構造好了,就要寫前台的樣式了。

1
從**框中看到一條有背景色**,為什麼要標出來呢!請不要急,繼續看下文

在視窗中定義expanderbox

1"ex

" header="

採購合同

" headerheight="

40" itemssources="

">2"

ex1" i***panded="

true

" header="

採購合同

" headerheight="

" itemssources="

">

如我所料,執行結果如圖!

但是我發現,我無論怎樣設定headerheight的值,都無法改變togglebutton高度。

在網上找了一些資料,很幸運的是在微軟**中找到答案,我就不多寫了,直接貼上原文

**:

對於模板方案來說,templatebinding 是繫結的優化形式,類似於使用 } 構造的 binding。

templatebinding 始終為單向繫結,即使所涉及的屬性預設為雙向繫結。 所涉及的兩個屬性都必須是依賴項屬性。

relativesource 是另乙個標記擴充套件,有時與 templatebinding 結合使用或者代替它使用,以便在模板中執行相對屬性繫結。

此處未介紹控制項模板概念;有關詳細資訊,請參閱 control 樣式和模板。

特性語法是最常用於該標記擴充套件的語法。 在 templatebinding 識別符號字串之後提供的字串標記被指定為基礎 templatebindingextension 擴充套件類的 property 值。

物件元素語法也可行,但因為沒有實際的應用,所以未進行演示。 templatebinding 用於使用計算的表示式來填充資源庫內的值,因此使用 templatebinding 的物件元素語法來填充 屬性元素語法就會變得繁冗而多餘。

templatebinding 還可以在詳細特性用法中使用,以便將 property 屬性指定為乙個 property=value 對:

看完這句話不能明白上面有兩種背景顏色的**。前面是單向繫結,所以在前台賦值無效,而後者是雙向繫結。

總結:templatebinding 是單向繫結形式。

binding是多向的。

以上只是個人想法和實踐經驗,如果有文字錯誤和語法錯誤,**以指點!

emil:[email protected]

無論是美女的歌聲,還是鬣狗的狂吠,無論是鱷魚的眼淚,還是惡狼的嚎叫,都不會使我動搖

基於繼承類的屬性模版中無法繫結的原因和解決方法

原文 基於繼承類的屬性模版中無法繫結的原因和解決方法 這個的晚上想學學wpf 做乙個類似於erp 左邊選單。構思一下思路 建立乙個類基於expander類。1 public class expanderbox expander216 set17 18 public icommand itemscom...

基於繼承類的屬性模版中無法繫結的原因和解決方法

這個的晚上想學學wpf 做乙個類似於erp 左邊選單。構思一下思路 建立乙個類基於expander類。複製 1 public class expanderbox expander 2 16 set 17 18 public icommand itemscommand 19 21 set 22 23 ...

類的繫結方法及隱藏屬性

類中定義的函式 沒有被任何裝飾器裝飾的 其實主要是給物件使用的,而且是繫結到物件的,雖然所有物件指向的都是相同的功能,但是繫結到不同的物件就是不同的繫結方法 強調 繫結到物件的方法的特殊之處在於,繫結給誰就由誰來呼叫,誰來呼叫,就會將 誰 本身當做第乙個引數傳給方法,即自動傳值 方法 init 也是...