2010-07-16 19 views
0

長話短說,我需要這樣做:x:類型和數組 - 如何?

ExpressionType="{x:Type sys:Byte[]}" 

換句話說,我需要這樣做:

foo.ExpressionType=typeof(byte[]); 

笏嗎?


更新:它是2010設計界面中的一個錯誤。它在運行時正常工作。

回答

1

如果沒有辦法做到這一點的框架,那麼您可以編寫自己的標記擴展:

public class ArrayTypeExtension 
    : MarkupExtension 
{ 
    public ArrayTypeExtension() {} 

    public ArrayTypeExtension(Type type) 
    { 
     this.Type = type; 
    } 

    public Type Type { get; set; } 

    public override object ProvideValue(IServiceProvider serviceProvider) 
    { 
     return Type == null ? null : Type.MakeArrayType(); 
    } 
} 

用法:

ExpressionType="{local:ArrayType sys:Byte}" 

其實只是在做{X:鍵入SYS :Byte []}似乎工作。

+0

恐怕這會最終得到正確答案...... – Will 2010-07-16 20:34:58

+0

@威爾:其實,只是在做'{x:Type sys:Byte []}'似乎對我很有用。當你嘗試時發生了什麼? – Quartermeister 2010-07-16 20:44:30

+0

您不能正確生成錯誤(?!?!)。您應該得到錯誤「未找到類型sys:Byte []」。「它會生成,但運行時會失敗。嘗試添加'DataContext =「{x:輸入sys:Byte []}」'到一個新的WPF表單項目並運行它。 – Will 2010-07-16 20:47:06