2011-03-04 140 views
3

我創建了一個WPF自定義控件作爲自動學習練習。我的控件在模板中有一個ListView。我希望我的控制用戶能夠在他自己的Xaml中定義需要的列,但是我沒有得到關於如何將列傳遞給內部列表視圖的策略,因爲與FindAncestor綁定抱怨「列」不是DependencyProperty。 Wekk的問題是:WPF綁定到控件模板上的非依賴項屬性

  1. 如何實現從XAML一個屬性綁定到模板時,它不是一個DP
  2. 糾正我的設計:我覺得有些不妥:如果有人將徹底改變我的模板,我應該如何讓他使用Column集合?

回答

3

爲什麼不直接從ListView繼承?然後,您擁有ListView所需的所有屬性,並且還可以將自己的屬性添加到該類中。

然後,您可以將自定義樣式應用到您的控件,使其看起來像你想要的。 (Here你有,你可以使用和擴展您需要的基本的ListView樣式)

+0

這是一個選項,也許它回答了這個問題2)糾正我的設計;但由於這是一個學習練習,我們不能試圖找出解決方案?噢真的沒有辦法? – 2011-03-04 09:27:25

+0

@Felice當然有辦法,但它們肯定會以某種形式涉及代碼。爲了讓內部的ListView在列中使用,您需要1:直接爲外部ColumnProperties的更改分配這些代碼的代碼,或2:用於綁定到外部ColumnProperty(避難所)的ListView上的附加的DependencyProperty/Behavior看起來不是很徹底,但實際上找不到有人以前做過) – 2011-03-04 09:39:30

+0

沒問題,所以修改設計是一個解決方案。 – 2011-03-04 10:05:49

3

有時結合使用the Binding Mode OneWayToSource

您是否嘗試過一個屬性,它不是依賴屬性可以解決?

+0

我沒有,但現在我已經證明了ListView的繼承。無論如何,很高興知道。 – 2011-03-04 10:09:43