xaml中的类型转换

本文关键字:类型转换 xaml | 更新日期: 2023-09-27 18:21:38

我是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时,VS位于中:

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

问题是,它生成了一个错误,当然,它解释了默认情况下无法将整数转换为字符串。通常,我会在知道自己在打字之前进行转换,但我不知道如何在xaml中进行转换。我考虑过绑定,但它似乎没有那么关注用户定义的变量,而且会更麻烦,所以我研究了转换器。在xaml中,我也很少发现将整数转换为字符串的方法。如果没有解决方案,我可以简单地将变量设置为字符串,并将它们转换为整数或浮点值,仅用于转换,然后将它们转换回,但这将是一个主要的(也是混乱的)痛苦。

编辑:明确地说,我真的在问两个问题:

  1. 仅在Xaml中可以进行类型转换吗
  2. 是否有默认的转换器用于将一种基元类型转换为另一种

xaml中的类型转换

框架中已经有一个TypeConverter可以将int转换为字符串,这里的问题是在使用StaticResourceDynamicResource时没有应用它。

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

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

但是您不能使用DynamicResource。

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

TypeConverters和XAML