我正在使用我自己的基于this tutorial扩展功能的自定义本地化库。
非常漂亮,但现在我想在ItemControl
内使用Template
用于所有可用语言,并根据项目的属性获取本地化值。
视图模型:
public IEnumerable<CultureInfo> AvailableLanguages
{
get
{
return TranslationManager.Instance.AvailableLanguages;
}
}
查看:
<ItemsControl ItemsSource="{Binding AvailableLanguages}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type glo:CultureInfo}">
<StackPanel Orientation="Horizontal">
<Image Width="32" Height="24"
Source="{loc:Translate {Binding TwoLetterISOLanguageName}}"/>
<TextBlock Text="{Binding DisplayName}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
显然使用Binding
作为参数将无效,因为MarkupExtensions
有一些限制(您可以在上面的链接中看到基本实现)。
有没有办法解决这个问题?我唯一的选择是在后面的代码中完成这些工作吗?