如何从 XAML 中的代码访问转换器?

mih*_*jlv 0 wpf xaml converters

我在后面的代码中有一个转换器,称为StringToIntConverter我尝试在 xaml 绑定中使用它,如下所示,其中 s 是项目命名空间:

Converter={s:StringToIntConverter}
Run Code Online (Sandbox Code Playgroud)

但它说它缺少程序集引用。我究竟做错了什么?

我知道有某种方法可以将其作为资源然后引用该资源,但我不知道该怎么做。

H.B*_*.B. 5

<Some.Resources>
    <s:StringToIntConverter x:Key="StringToIntConverter"/>
</Some.Resources>
<!-- ... -->
Converter={StaticResource StringToIntConverter}
Run Code Online (Sandbox Code Playgroud)

大括号表示标记扩展,它们不能随意用于实例化对象,但为了方便起见,您可以将转换器转换为标记扩展。

就像是:

<Some.Resources>
    <s:StringToIntConverter x:Key="StringToIntConverter"/>
</Some.Resources>
<!-- ... -->
Converter={StaticResource StringToIntConverter}
Run Code Online (Sandbox Code Playgroud)

那么您使用的代码就可以正常工作了!


另请注意,您也可以使用 XML 元素语法中的绑定来实例化转换器,例如

<TextBox>
    <TextBox.Text>
        <Binding Path="String">
            <Binding.Converter>
                <s:StringToIntConverter />
            </Binding.Converter>
        </Binding>
    </TextBox.Text>
</TextBox>
Run Code Online (Sandbox Code Playgroud)