WPF TypeConverter用法


WPF的流行,或者說是XAML的流行已經不可阻擋了。所以學習一些WPF的知識是非常有必要的。

關於TypeConverter,其實是一個將XAML屬性值(string字符串)轉換為對象的轉換器。

 

要實現這個轉換器,需要我們首先定義一個繼承自TypeConverter類的轉換類。

        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
        {
            if (value is string)
            {
                Human human = new Human();
                human.Name = value.ToString();
                return human;
            }

            return base.ConvertFrom(context, culture, value);
        }
    }

這個類是將一個XAML屬性值轉換為程序中的Human對象,Human的定義如下:

    public class Human
    {
        public string Name { get; set; }
        public Human Child { get; set; }
    }

當定義好轉換器以后,我們還需要通過為Human添加特性的形式將轉換器和被轉換的類關聯起來,修改后的Human代碼如下(改動的地方已標紅):

    [TypeConverter(typeof(StringToHumanTypeConverter))]
    public class Human
    {
        public string Name { get; set; }
        public Human Child { get; set; }
    }

通過這樣定義以后,我們可以直接在XAML中為Human附加字符串值。

    <Window.Resources>
        <local:Human x:Key="human" Name="Tom" Child="ABC"></local:Human>
    </Window.Resources>

注意:關於local前綴,直接寫上去是會出錯的。需要在Window中定義:xmlns:local="clr-namespace:SampleTypeConverter"

 

我們在程序中可以通過查找資源來找到human對象,並訪問其Child屬性:

    Human human = (Human)this.FindResource("human");
    MessageBox.Show(human.Child.Name);

 

以上代碼參考自《深入淺出WPF》,僅作學習筆記。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM