Привязки команд ReactiveUI к динамическому ItemsSource - PullRequest
0 голосов
/ 14 мая 2019

У меня есть меню с несколькими элементами меню, содержащимися внутри.Один из под-MenuItems имеет ItemSource, который связан с IEnumerable [string].Каждая из этих команд MenuItems должна быть привязана к одной и той же ReactiveCommand в модели представления с самим параметром (элемент в IEnumerable).Существует также дополнительный MenuItem, к которому привязан отдельный ReactiveCommand.Я пытаюсь использовать привязки ReactiveUI для этих элементов управления, но я не уверен, как реализовать.

Мне удалось правильно сделать привязки со стандартными привязками WPF / .xaml, но я не могу получить их с помощью ReactiveUI.

Ниже показано, как я реализовал это с использованием стандартногопривязки.

<Menu>
            <Menu.Resources>
                <CollectionViewSource x:Key="TaskConfigurationNames" Source="{Binding TaskConfigurationNames}"/>
            </Menu.Resources>
            <MenuItem Header="_Tasks"
                      Background="{StaticResource PrimaryColorBrush}"
                      Foreground="{StaticResource OnPrimaryColorBrush}">
                <MenuItem Name="SaveTaskConfigMenuItem"
                          Header="Save Task Configuration"
                          Command="{Binding SaveTaskConfiguration}"/>
                <MenuItem Name="SaveTaskConfigAsMenuItem"
                          Header="Save Task Configuration As...">
                    <MenuItem.ItemContainerStyle>
                        <Style TargetType="{x:Type MenuItem}"
                               BasedOn="{StaticResource UnderScoredMenuItem}">
                            <Setter Property="Command" 
                                    Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type Menu}}, Path=DataContext.SaveAsNewTaskConfiguration}"/>
                            <Setter Property="CommandParameter"
                                    Value="{Binding }"/>
                        </Style>
                    </MenuItem.ItemContainerStyle>
                    <MenuItem.ItemsSource>
                        <CompositeCollection>
                            <CollectionContainer Collection="{Binding Source={StaticResource TaskConfigurationNames}}"/>
                            <MenuItem Name="AddNewTaskConfigMenuItem"
                                      Header="Add New..."
                                      Command="{Binding SaveAsTaskConfiguration}"/>
                        </CompositeCollection>
                    </MenuItem.ItemsSource>
                </MenuItem>
...