WPF TypeConverter用法

來源:互聯網
上載者:User

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》,僅作學習筆記。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.