На мой взгляд, я использую ItemsControl для отображения нескольких кнопок. XAML для ItemsControl является:Bind ICommand in Converter
<ItemsControl ItemsSource="{Binding CustomDirectories, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource buttonConverter}}" Margin="2">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
В ViewModel моего просмотра у меня есть ICommand, который может обрабатывать Button-Click. Мне нужна команда здесь, потому что мне также нужны некоторые другие Свойства.
Конвертер для создания кнопок является:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is ObservableCollection<DVDDirectory>)
{
ObservableCollection<CustomDirectory> customDirectories = (ObservableCollection<CustomDirectory>)value;
List<Button> buttons = new List<Button>();
foreach (CustomDirectory customDirectory in customDirectories)
{
Button button = new Button
{
Margin = new Thickness(2),
Width = 140,
Height = 25,
Content = Path.GetFileName(customDirectory.Path)
};
buttons.Add(button);
}
return buttons;
}
return value;
}
Мой вопрос теперь: как я могу назначить команду из ViewModel командованию в конвертер, где созданы кнопки?
Я попытался передать DataContext моего представления в конвертер в качестве ConverterParameter, но там я получаю BindingException.
преобразователи не предназначены для этой цели –