我在后面的代码中有一个名为StringToIntConverter
的转换器我尝试在xaml绑定中使用它,其中s是项目命名空间:
Converter={s:StringToIntConverter}
但是它说它缺少一个程序集引用。我做错了什么?
我知道有一些方法可以将它作为资源然后引用资源,但我不知道该怎么做。
答案 0 :(得分:4)
<Some.Resources>
<s:StringToIntConverter x:Key="StringToIntConverter"/>
</Some.Resources>
<!-- ... -->
Converter={StaticResource StringToIntConverter}
大括号表示markup extension ,它们不能随意用于实例化对象,但为方便起见,可以将转换器转换为标记扩展名。
类似的东西:
public class StringToIntConverter : MarkupExtension, IValueConverter
{
//...
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
然后你使用的代码就可以了!
另请注意,您可以使用XML元素语法中的绑定来实例化转换器,例如。
<TextBox>
<TextBox.Text>
<Binding Path="String">
<Binding.Converter>
<s:StringToIntConverter />
</Binding.Converter>
</Binding>
</TextBox.Text>
</TextBox>
答案 1 :(得分:3)
xmlns:converters="clr-namespace:Shared.Converters;assembly=Shared"
即使它在同一个组件中 - 类似......
xmlns:local="clr-namespace:ItemMaster"
现在您需要为要使用的转换器创建staticResource。
<converters:CostMethodToBooleanConverter x:Key="CostMethodToBooleanConverter"/>
然后你可以使用它。
IsEnabled="{Binding SelectedItem, Converter={StaticResource ReverseCostMethodToBooleanConverter}, ElementName=OemOriginalCostMethod}"/>
这有帮助吗?