WPF:使用TypeConverter


所謂TypeConverter就是類型轉換器,支持兩種類型之間相互轉換

你可以重寫轉換邏輯,只要你清楚轉換的協議,就可以實現類型互轉。

定義一個Person類型,具有一個int類型的Age屬性:

public class Person
    {
        public int Age
        {
            get;
            set;
        }
    }


在XAML中添加一個Person的資源:

    <Window.Resources>
        <local:Person x:Key="person"></local:Person>
    </Window.Resources>

本來可以像這樣初始化一個Person對象:

    <Window.Resources>
        <local:Person x:Key="person" Age="123"></local:Person>
    </Window.Resources>

但是現在由於要引入TypeConverter,假設我想像下面這樣初始化Person對象怎么辦:

    <Window.Resources>
        <local:Person x:Key="person">123</local:Person>
    </Window.Resources>

這就要用到TypeConverter,首先我們定義自己的Converter,繼承自TypeConverter,然后重寫TypeConverter的轉換邏輯:

    public class StringToPersonConverter:TypeConverter
    {
        /// <summary>
        /// 從String轉換為Person
        /// </summary>
        /// <param name="context"></param>
        /// <param name="culture"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
        {
            int age;
            if (int.TryParse(value.ToString(), out age))
            {
                return new Person
                {
                    Age = age
                };
            }

            return null;
        }
    }

然后給Person類加上TypeConverter特性,讓編譯器知道當無法通過正常的方式初始化Person時,可以找StringToPersonConverter尋求幫助:

    [TypeConverter(typeof(StringToPersonConverter))]
    public class Person
    {
        public int Age
        {
            get;
            set;
        }
    }

 


免責聲明!

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



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