数据绑定以显示程序集名称

时间:2011-12-12 17:17:51

标签: c# wpf xaml data-binding

我有一个ComboBox程序集,我想只显示程序集名称,而不是FullName。我想在绑定中做的等价代码是

 asm.GetName().Name

我也将此标记为c#问题,因为也许我不知道大会上有属性。

以下是我正在使用的XAML的相关部分:

<ComboBox.ItemTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding FullName}" /> ** just the Name please
    </DataTemplate>
</ComboBox.ItemTemplate>

这样做的好方法是什么?

干杯,
浆果

2 个答案:

答案 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" />