ReactiveUI命令绑定到动态ItemsSource

时间:2019-05-14 19:30:44

标签: wpf xaml reactiveui

我有一个包含多个MenuItem的菜单。子MenuItem之一具有绑定到IEnumerable [string]的ItemSource。这些菜单项命令中的每一个都应使用其自身的参数(IEnumerable中的一项)绑定到视图模型中的同一ReactiveCommand。还有一个附加的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>

0 个答案:

没有答案