要应用于所有组合框所选项目的项目

时间:2015-03-10 03:07:44

标签: wpf mvvm

我想要一个函数将所选项应用于数据网格中的所有组合框。目前我所拥有的:

  1. 组合框,用于选择要应用于数据网格中所有组合框的项目。这已放在标题部分
  2. 按钮执行"适用于所有"命令
  3. 每行数据网格中的组合框。
  4. 组合框绑定到Service类的ObservableCollection:

     public ObservableCollection<Services> ServiceList
            {
              get
              {
                return serviceList;
              }
              set
              {
                this.serviceList = value;
                RaisePropertyChanged("ServiceList");
              }
            }
    

    这是我在XAML中应用命令执行所述函数的方法:

    <StackPanel Name="stackPanel2"
                        Grid.Row="1"
                        Grid.Column="1"
                        Width="335"
                        Height="26"
                        Margin="3,8,0,0"
                        HorizontalAlignment="Left"
                        VerticalAlignment="Top"
                        Orientation="Horizontal">
                <ComboBox Name="comboBox1"
                          Width="120"
                          Height="23"
                          DisplayMemberPath="DESCRIPTION"
                          ItemsSource="{Binding ServiceList}"
                          SelectedItem="{Binding SelectedServiceAll,Mode=TwoWay}"
                          />
                <Button Content="Apply to all"
                        Command="{Binding CommandApplyAll}"
                        CommandParameter="AllService"
                        >
                </Button>
    
    </StackPanel>
    

    这是数据网格行组合框绑定:

    <DataGridTemplateColumn>
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <ComboBox Name="comboBoxService"
                                          Width="120"
                                          Height="23"
                                          DisplayMemberPath="DESCRIPTION"
                                          ItemsSource="{Binding Path=ServiceList}"
                                          SelectedValue="{Binding Path=SERVICE,
                                                                  UpdateSourceTrigger=PropertyChanged}"                                       
                                          />
    
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
    

    我是否应该使用在标题部分中选择的那个更新数据网格中的组合框的数据源(ObservableCollection ServiceList),但不知道如何实现它。

    注意:此应用程序应用MVVM

    非常感谢

1 个答案:

答案 0 :(得分:0)

如果我没有误解你的问题,你可以像在ApplyCommand Action中设置SERVICE(绑定到SelectedValue)那样做

    private void OnApplyCommand()
    {
        foreach (var item in ServiceGridDataList)
        {
            item.SERVICE = SelectedServiceAll.SERVICE;
        }
        SelectedGridService = selectedHeaderService;
        //Other apply command Action;
    }

此处ServiceGridDataList是绑定到Grid的ItemsSource的Collection。