【问题标题】:How to translate Xamarin Xaml IValueConverter into C#?如何将 Xamarin Xaml IValueConverter 翻译成 C#?
【发布时间】:2026-02-02 06:25:01
【问题描述】:

你能帮我把这个 Xamarin xaml 翻译成 c# 吗?

BackgroundColor="{Binding IconColor, Converter={StaticResource LocalHexColorFromStringConverter}}"/>

谢谢!

【问题讨论】:

标签: xaml xamarin.forms ivalueconverter


【解决方案1】:

您可以通过MyBtn.SetBinding(Button.BackgroundColorProperty, "IconColor", BindingMode.OneTime, new LocalHexColorFromStringConverter()) ;翻译它

我用 Button 的背景颜色做一个测试。

   Button MyBtn = new Button();
   MyBtn.Text = "test";
   MyBtn.SetBinding(Button.BackgroundColorProperty, "IconColor", BindingMode.OneTime, new LocalHexColorFromStringConverter()) ;
   Content = MyBtn;

这里是LocalHexColorFromStringConverter.cs

  public class LocalHexColorFromStringConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return Color.FromHex((string)value);
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value;
        }
    }

请问“new LocalHexColorFromStringConverter()”和“converter: LocalHexColorFromStringConverter()”有什么区别?

你的意思是“new LocalHexColorFromStringConverter()”和“converter: LocalHexColorFromStringConverter”吗?

如果是,它们是相同的,converter: LocalHexColorFromStringConverter 是 Xaml 中的 wirte 类型,converter: 是前缀,它解释了这个类的具体路径,如果你想从任何页面调用它,你需要写在App.xaml

例如,你在 App.xaml 中添加添加它。

<?xml version="1.0" encoding="utf-8" ?>
<Application xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             xmlns:converters="clr-namespace:OAuthGoogleDemo"
             x:Class="OAuthGoogleDemo.App">
    <Application.Resources>
       
       <ResourceDictionary>
            <converters:LocalHexColorFromStringConverter x:Key="HexColorFromStringConverter" />
        </ResourceDictionary>
        
    </Application.Resources>
</Application>

然后在 Mainpage.xaml 中使用 Converter={StaticResource HexColorFromStringConverter}}"

【讨论】:

  • 请问“new LocalHexColorFromStringConverter()”和“converter: LocalHexColorFromStringConverter()”有什么区别?我想我学会了在 App.Xaml 中创建一个实例,然后从任何页面调用它......这是典型的工作流程吗?