嗨有沒有人知道是否有任何內置的類從綁定表達式解析綁定對象,它的DataItem和屬性路徑?如何使用WPF解析bindingexpression中的綁定對象?
我正在嘗試編寫一個Blend 3行爲的文本框,它會自動調用綁定到文本框Text屬性的對象上的方法。
該文本框綁定到viewmodel類的屬性。我想要做的是從綁定表達式中解析viewmodel類,然後對此進行調用。
我第一次檢索行爲的關聯對象綁定表達式,像這樣:
private BindingExpression GetTextBinding()
{
return this.AssociatedObject.GetBindingExpression(TextBox.TextProperty);
}
已經做到了這一點,如果我們看一下綁定表達式,我們可以看到它必須通過數據上下文的參照綁定表達式的DataItem屬性。
此外,我們有綁定表達式的父綁定上綁定的屬性的相對路徑。
所以,我們可以得到這樣的信息:(?再)
var bindingExpression = GetTextBinding();
object dataContextItem = bindingExpression.DataItem;
PropertyPath relativePropertyPath = bindingExpression.ParentBinding.Path;
現在,這個屬性路徑可能是一個深度嵌套的和複雜的路徑,這是我非常希望,以避免執行第的。我搜索了.NET文檔,並用反射器反彈了所有程序集,但都無濟於事 - 我無法找到肯定必須存在的東西 - 必須有一些類來執行數據項目路徑的解析(數據上下文)。
有人知道這可能存在嗎?任何關於解決綁定對象的替代方法的建議?請注意,我試圖得到綁定的對象,這是綁定屬性的父(在這種情況下,字符串) - 我可以很容易地獲得綁定值,但它是我需要的父對象。
在此先感謝您的幫助! 菲爾
感謝zhech,我給一個嘗試。 – Phil 2009-10-19 02:44:43
My2cents,是否有你傳入對象dataItem的原因?爲什麼不改變方法簽名來取代一個參數,而是從BindingExpression中獲取dataItem? – Terrance 2012-04-27 16:50:13
這看起來不像它會用索引器解析屬性路徑,還是它? – 2014-01-02 15:07:13