我假設有一種方法可以告訴WPF如何將字符串目標轉換爲源類型而無需指定IValueConverter。例如,WPF會將字符串轉換爲顏色。我想如果我的類型支持從字符串到我的類型的顯式轉換,這就足夠了。但是這不起作用。有沒有辦法?如何告訴WPF無需IValueConverter將目標轉換爲我的源類型
0
A
回答
1
是的,但是你必須爲你的類型定義一個類型轉換器。只需重寫ToString(),就可以從類型轉換爲字符串。要走另一個方向,你需要一個類型轉換器。例如...
public class PartNumberConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(string);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
if(value is string)
{
return new PartNumber(value as string);
}
return null;
}
}
[TypeConverter(typeof(PartNumberConverter))]
public class PartNumber
{
public PartNumber(string s)
{
string[] e = s.Split('-');
if(e.Length==3)
{
_a = Convert.ToInt32(e[0]);
_b = Convert.ToInt32(e[1]);
_c = Convert.ToInt32(e[2]);
}
}
public PartNumber(int a, int b, int c)
{
_a = a;
_b = b;
_c = c;
}
int _a = 0;
int _b = 0;
int _c = 0;
public override string ToString()
{
return _a + "-" + _b + "-" + _c;
}
}
所以不是的IValueConverter但仍然是一個轉換器:)
+0
注意:爲了OP的緣故。 'IValueConverter'是一個運行時工具。這裏列出的'TypeConverter'是一個設計時間工具。如果你直接綁定到你的對象,那麼'IValueConverter'可能是正確的工具。如果你在XAML中創建你的類型的實例,那麼'TypeConverter'是正確的工具。 –
+0
謝謝你的回答。我想讓我的類型被XAML程序員使用,而不必創建IValueConverter。這工作完美。謝謝。 – user3905162
相關問題
- 1. 無法將源類型轉換爲目標類型
- 2. UIImage.AsJPEG()返回「無法從源類型轉換爲目標類型」。
- 3. 無法轉換源類型system.nullable目標類型爲int
- 4. Unity C#InvalidCastException:無法從源類型轉換爲目標類型
- 5. 無法從源類型轉換爲目標類型Json
- 6. 無法從源類型轉換爲目標類型迭代轉換
- 7. 無法將源類型轉換爲目標類型List <KeyValuePair> Linq
- 8. 無法將源類型'字符串'轉換爲目標類型'uint'錯誤c#
- 9. 無法將源接口類型轉換爲目標接口類型
- 10. 如何將源類型'System.Nullable <bool>'轉換爲目標類型'bool'
- 11. 不能從源類型轉換爲目標類型
- 12. Monotouch綁定 - 「不能從源類型轉換爲目標類型。」
- 13. 請告訴我如何將XML文件轉換爲數據表
- 14. 有人能告訴我如何將ActionScript 2轉換爲actionscript3嗎?
- 15. 編譯器告訴我「不能將類型'char'隱式轉換爲'bool'
- 16. 如何將強類型的DataTable轉換爲無類型的DataTable
- 17. 無法將源類型「System.Web.UI.Control」爲目標類型「System.Web.UI.WebControls.TextBox」
- 18. 將webapp資源轉換爲目標
- 19. 如何告訴AutoMapper在我的目標類型上使用方法?
- 20. Javascript,類型轉換需要(我認爲)
- 21. 無法將System.String轉換爲類類型
- 22. 無法將源類型「無效」爲目標類型「的ICollection <Character>」
- 23. WPF IValueConverter - 將多個值轉換爲單個值
- 24. 無法java.lang.String類型的值轉換爲所需的類型java.util.Date
- 25. 創建通用的IValueConverter數據類型轉換爲字符串
- 26. 如何將System.Windows.Controls類型轉換爲System.Windows.Forms wpf
- 27. 無法將源類型'System Linq IQueryable <decimal>'轉換爲目標類型十進制
- 28. Neo4j:spring-data-neo4j,如何將結果轉換爲我的類型類?
- 29. 我需要將這兩個函數從javascript更改爲jQuery任何一個可以告訴我如何轉換
- 30. [InvalidCastException的:無法轉換類型 'System.DBNull' 的目的爲類型 'System.String']
你可以註冊一個[類型轉換器(https://msdn.microsoft.com/en-us/library/system .componentmodel.typeconverter(v = vs.110)的.aspx)。 – Clemens