Привязка данных для отображения имени сборки - PullRequest
2 голосов
/ 12 декабря 2011

У меня есть ComboBox сборок, и я хотел бы отображать только имя сборки, а не FullName.Эквивалентный код того, что я хочу сделать в привязке:

 asm.GetName().Name

Я отмечаю это как вопрос ac # также, поскольку, возможно, в Assembly есть свойство, о котором я не знаю.

Вот соответствующая часть XAML, которую я использую:

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

Какой хороший способ сделать это?

Приветствия,
Ягода

Ответы [ 2 ]

3 голосов
/ 12 декабря 2011

Запишите преобразователь значения , который вызовет метод 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();
    }
}
2 голосов
/ 12 декабря 2011

В этом случае вы можете привязать комбинированный список к словарю, где Key будет именем сборки, а Value - самой сборкой, так что вы также сможете привязать имя сборки и другие свойства.

allAssembliesMap.Add(assembly.GetName().Name, assembly);

public IDictionary<string, Assembly> AllAssemblies 
{ 
    get 
    { 
       return allAssembliesMap; 
    } 
}
<ComboBox ItemsSource="{Binding AllAssemblies}"
          DisplayMemberPath="Key"
          SelectedValuePath="Value" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...