В приложении MVVM я динамически хочу показать кнопки для функций, которые можно изменить во время выполнения. Технически это не так сложно, в моей ViewModel у меня есть наблюдаемая коллекция RelayCommands:
public ObservableCollection<RelayCommand> CustomCommands {get;set;}
Теперь в Xaml я могу привязать ListBox к этой коллекции:
<StackPanel Orientation="Horizontal">
<ListBox ItemsSource="{Binding CustomCommands}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<wpfhlp:RelayButton DataContext="{Binding}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
На первый взгляд похоже, что он работает.
Моя проблема: порядок табуляции нарушен. Я хочу, чтобы пользователь мог переходить с кнопки на кнопку, но вместо кнопки ListBox фокусируется на пользователях, и я могу выбирать кнопки с помощью клавиш со стрелками вместо вкладки.
Мне нужна возможность ListBox для привязки к коллекции, но мне не нужны никакие другие функции списка.
Есть ли какая-то другая панель вместо ListBox, которую я могу использовать?
Или я могу как-то отключить функции ListBox, чтобы он просто отображал содержащиеся элементы, не имея возможности выбрать их в ListBox?