2008-12-16 62 views
1

我正在WPF應用程序中定製MarkupExtension。我見過的每個記錄的示例都使用XAML中的字符串參數來構造新對象。是否可以使用非字符串參數?如何使用非字符串參數創建MarkupExtension?

換句話說,我該怎麼做這樣的事情?

[MarkupExtensionReturnType(typeof(Uri))] 
public class RefPackUriExtension : MarkupExtension 
{ 
    object _assembly = null; 

    public RefPackUriExtension() { } 

    public RefPackUriExtension(object assembly) 
    { 
     this._assembly = assembly; 
    } 

    public override object ProvideValue(IServiceProvider serviceProvider) 
    { 
     //return an object by using the "_assembly" member somehow 
    } 
} 

回答

0

您的MarkupExtension的任何參數都與CLR對象上的屬性具有相同的解析行爲。您可以使用TypeConverter來允許用戶提供轉換爲目標類型的string,或者可以使用另一個MarkupExtension

作爲前者的示例,請參閱ColorConverter類。作爲後者的一個例子,請參閱RelativeSource類(它在BindingMarkupExtension中使用)。

+0

您確定這是否行?在我發佈這個問題之前,我嘗試使用Binding MarkupExtension並收到編譯時錯誤。 – YeahStu 2008-12-17 19:16:46

相關問題