【发布时间】:2016-09-19 22:02:15
【问题描述】:
我有Languages 枚举。而我的Model.Translations 代表不同的语言翻译:
public ObservableCollection<LanguageValue> Translations { get; set; }
public class LanguageValue
{
public Language Key { get; set; }
public string Value { get; set; }
}
我希望我的视图有标签 - 翻译中每个项目的文本框列表。
但在标签中,我想要"Caption ({0})" 之类的东西,其中参数是语言名称(枚举到字符串表示)。此文本本身来自资源。
类似:
<ItemsControl ItemsSource="{Binding Path=Translations}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="5,2,5,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30*"/>
<ColumnDefinition Width="70*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" x:Name="ItemLabel" VerticalAlignment="Center"
Text="{Binding Path=Key, Converter=languageConverter, ConverterParameter={x:Static res:Resources.lblCaption}}" />
<TextBox Grid.Column="1" x:Name="ItemText" VerticalAlignment="Center"
Text="{Binding Path=Value, Mode=TwoWay}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我的语言转换器:
[ValueConversion(typeof(Language), typeof(string))]
public class LanguageToDisplayConverter : IValueConverter
{
public object Convert(object value, Type t, object parameter, CultureInfo culture)
{
return string.Format(parameter.ToString(), ((Language)value).ToString());
}
public object ConvertBack(object value, Type t, object parameter, CultureInfo culture)
{
//I guess I don't need this anyway?
return null;
}
}
但我有错误:
The TypeConverter for "IValueConverter" does not support converting from a string.
怎么了?
【问题讨论】: