李深朵 发表于 2019-4-3 18:25:37

WPF c1:C1DataGrid中SelectedItem="{Binding mUserSelectedItem}"

wpf在使用c1:C1DataGrid时出现情况。binding 表格的选中行信息,当我选中行时ViewMode中binding的数据 没有改变;
我把c1:C1DataGrid 换成wpf 自带的DataGrid 就可以使用,请指教。
是C1的控件限制了这个操作还是其他的问题。
    我现在的需求是选中表格一行数据,ViewMode可以得到表格当前选中行 ,如有其它的方法虚心请教。我使用的是MVVM模式
    一下是我现在的代码


前台代码------------------------------------------------------------------
<c1:C1DataGrid x:Name="GridUserList" Grid.Row="1" ItemsSource="{Binding mGridUserList}"
                        SelectedItem="{Binding mUserSelectedItem}" AutoGenerateColumns="False">
                  <c1:C1DataGrid.Columns>
                        <c1:DataGridTextColumn Binding="{Binding Code}" Header="用户代码" Width="*"></c1:DataGridTextColumn>
                        <c1:DataGridTextColumn Binding="{Binding Name}" Header="用户名称" Width="*"></c1:DataGridTextColumn>
                        <c1:DataGridTextColumn Binding="{Binding Status}" Header="用户状态" Width="*"></c1:DataGridTextColumn>
                        <c1:DataGridTextColumn Binding="{Binding DefaultUserGroup}" Header="用户职责" Width="*"></c1:DataGridTextColumn>
                        <c1:DataGridTemplateColumn Header="所属部门">
                            <c1:DataGridTemplateColumn.CellTemplate>
                              <DataTemplate>
<Button Content="编辑"Style="{StaticResource ButtonUpdate}" Command="{Binding DataContext.mSelectUserGroupCommand,
                                        RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=c1:C1DataGrid}}"></Button>
                                    </DataTemplate>
                            </c1:DataGridTemplateColumn.CellTemplate>
                        </c1:DataGridTemplateColumn>
                        <c1:DataGridTemplateColumn Header="编辑">
                            <c1:DataGridTemplateColumn.CellTemplate>
                              <DataTemplate>
                                    <Button Content="编辑"Style="{StaticResource ButtonUpdate}" Click="ButEdit_Click" ></Button>
                              </DataTemplate>
                            </c1:DataGridTemplateColumn.CellTemplate>
                        </c1:DataGridTemplateColumn>
                  </c1:C1DataGrid.Columns>
                </c1:C1DataGrid>

ViewMode代码-------------------------------------------------------------
User _mUserSelectedItem;
      /// <summary>
      /// 记录当前选中的用户信息
      /// </summary>
      public User mUserSelectedItem
      {
            get
            {
                return _mUserSelectedItem;
            }
            set
            {
                _mUserSelectedItem = value;
                OnPropertyChanged("mUserSelectedItem");
            }
      }


波波虎 发表于 2023-5-22 23:17:11

你可以通过设置 C1DataGrid 控件的 IsSynchronizedWithCurrentItem 属性为 true 来轻松实现此功能。这将使选中的单元格所属的行自动设置为控件的当前项。可以使用 Binding 绑定到控件的 CurrentItem 属性来获取当前选中的行数据。

以下是一个示例,展示如何将 C1DataGrid 控件的选中行绑定到 ViewModel 中的 SelectedItem 属性:

```xml
<c1:C1DataGrid x:Name="dataGrid"
               ItemsSource="{Binding Customers}"
               IsSynchronizedWithCurrentItem="True"
               SelectedItem="{Binding SelectedItem}"
               SelectionMode="Single">
    <c1:C1DataGrid.Columns>
      <!-- 定义列 -->
    </c1:C1DataGrid.Columns>
</c1:C1DataGrid>
```

注意,上述代码中的 SelectedItem 属性是你 ViewModel 中的一个属性,它应该实现 INotifyPropertyChanged 接口,并进行相应的处理来更新你视图上需要更新的数据。当你选中某个单元格时,SelectedIem 会自动更新为选中行的数据。

Richard.Ma 发表于 2023-5-23 09:47:45

:hjyzw:
页: [1]
查看完整版本: WPF c1:C1DataGrid中SelectedItem="{Binding mUserSelectedItem}"