C# xaml中的类型转换

C# xaml中的类型转换,c#,wpf,xaml,C#,Wpf,Xaml,我是WPF的新手,我发现关于我认为是一个基本问题的信息量惊人地少,这就是在文本块中使用整数。以下是我如何在app.xaml中定义我的资源: xmlns:sys="clr-namespace:System;assembly=mscorlib" 及 -1 这是正确定义和功能性的,因为当我尝试在简单TextBlock对象中使用VS时,它位于: <TextBlock Name="MyTextboxName" Text="{DynamicResource MyResourceName}" /&

我是WPF的新手,我发现关于我认为是一个基本问题的信息量惊人地少,这就是在文本块中使用整数。以下是我如何在
app.xaml
中定义我的资源:

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


-1
这是正确定义和功能性的,因为当我尝试在简单TextBlock对象中使用VS时,它位于:

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

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

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

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

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


    框架中已经有一个将int转换为字符串的类型转换器,这里的问题是,当您使用
    静态资源
    动态资源
    时,它不被应用

    您只需绑定到您的资源:

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

    但不能使用DynamicSource

    看起来像int到string这样的原始转换应该有一个现有的转换器。我决定写一个(存储在单独的.cs文件中)。Visual Studio可以找到该类,但我无法访问其中的任何方法。该类从IValueConverter继承并实现。是否有什么特殊的东西我可能会错过,使它“可见”的Xaml?这给了我一个错误,需要一个路径指定。我找不到任何路径不是Xaml元素的地方,所以我不知道绑定如何在资源上工作。绑定不需要路径,直接绑定到源。来自MSDN:“要绑定到整个对象,您不需要指定Path属性。”我阅读了更多关于绑定的内容,以了解何时可以使用标记扩展(就像您将两个标记扩展放在一起的方式),现在我明白了。好的,改为使用标签,并设置其
    内容
    属性如何?您还可以设置其
    ContentStringFormat
    属性。
    <TextBlock Name="MyTextboxName" Text="{Binding Source={StaticResource MyResourceName}}" />