我使用MV-VM模式獲取價值的MarkupExtension
在我的虛擬機我有這樣的代碼
public class ViewModel {
public XmlDocument Document { ... }
....
}
我有一個標記擴展從中我想用上述文件
public override object ProvideValue(IServiceProvider serviceProvider) {
IProvideValueTarget valueProvider = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;
if (valueProvider != null) {
DependencyObject target = valueProvider.TargetObject as DependencyObject;
XmlDocument doc = Foo.GetDocument(target);
if (doc != null) {
var n = doc.SelectSingleNode("/.../text()");
if (n != null) return n.Value;
}
}
return "«" + ObjectProperty + "»";
}
我創建附加屬性Foo.Document,它連接到我的頁面(頁面的DataContext設置我的ViewModel類的一個實例
<Page ... lc:Foo.Document="{Binding Document}">
...
</Page>
(爲了不必每一個我用的標記擴展的時間把它的類型作爲參數)
現在,在我的標記擴展,當我嘗試讀取文檔附加屬性我總是一個空文件。通過調試綁定,它看起來像是一個計時問題,因爲附加屬性在標記擴展運行後得到適當的值。
是否有可能讓這個工作以某種方式?
這不爲我所有發生......被調用一次 – flq 2012-03-05 14:03:42