在xaml中键入转换

时间:2014-09-11 06:13:03

标签: c# wpf xaml

我是WPF的新手,我发现了一些关于我认为是基本问题的惊人数量的信息,即对TextBlock中的文本使用整数。以下是我在app.xaml中定义资源的方式:

xmlns:sys="clr-namespace:System;assembly=mscorlib"

<Application.Resources>
    <sys:Int32 x:Key="MyResourceName">-1</sys:Int32>
</Application.Resources>

这是正确定义和功能的,因为当我尝试在一个简单的TextBlock对象中使用它时,VS会找到它:

<TextBlock Name="MyTextboxName" Text="{DynamicResource MyResourceName}" />

问题是它产生了一个错误,当然,它解释了默认情况下它不能将整数转换为字符串。通常情况下,我会在知道自己打字之前将其投出,但我不知道如何使用xaml进行投射。我考虑过绑定,但它似乎并没有像用户定义的变量一样多关注并且会更加繁琐,所以我看了转换器。我也发现很少有关于将整数转换为xaml中的字符串。如果没有解决方案,我可以简单地创建变量字符串并将它们转换为仅用于转换的整数或浮点数,然后将它们转换回来,但这将是一个主要(并且混乱)的痛苦。

编辑:要清楚,我真的问了两个问题:

  1. 只能在Xaml中进行类型转换吗?
  2. 是否有用于将一种基本类型转换为另一种基本类型的默认转换器?

2 个答案:

答案 0 :(得分:2)

在Framework中已经有一个将int转换为字符串的TypeConverter,这里的问题是当你使用StaticResourceDynamicResource时它不会被应用。

您只需要绑定到您的资源:

<TextBlock Name="MyTextboxName" Text="{Binding Source={StaticResource MyResourceName}}" />

但您不能使用DynamicResource。

答案 1 :(得分:0)

您需要编写转换器并使用它转换为您。然后将其添加为资源。

TypeConverters and XAML