我有一个ComboBox程序集,我想只显示程序集名称,而不是FullName。我想在绑定中做的等价代码是
asm.GetName().Name
我也将此标记为c#问题,因为也许我不知道大会上有属性。
以下是我正在使用的XAML的相关部分:
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding FullName}" /> ** just the Name please
</DataTemplate>
</ComboBox.ItemTemplate>
这样做的好方法是什么?
干杯,
浆果
答案 0 :(得分:3)
写一个value converter,它将调用GetName方法并返回Name。
public class AssemblyNameConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var assembly = (Assembly)value;
return assembly.GetName().Name;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
答案 1 :(得分:2)
作为一种情况,您可以将组合框绑定到字典,其中Key将是一个程序集名称和Value - assembly本身,因此您也可以绑定到程序集名称和其他属性。
allAssembliesMap.Add(assembly.GetName().Name, assembly);
public IDictionary<string, Assembly> AllAssemblies
{
get
{
return allAssembliesMap;
}
}
<ComboBox ItemsSource="{Binding AllAssemblies}"
DisplayMemberPath="Key"
SelectedValuePath="Value" />