找回密码
 立即注册

QQ登录

只需一步,快速开始

李深朵

注册会员

2

主题

2

帖子

10

积分

注册会员

积分
10
最新发帖
李深朵
注册会员   /  发表于:2019-4-3 18:25  /   查看:4069  /  回复:2
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>
                        <c1ataGridTextColumn Binding="{Binding Code}" Header="用户代码" Width="*"></c1ataGridTextColumn>
                        <c1ataGridTextColumn Binding="{Binding Name}" Header="用户名称" Width="*"></c1ataGridTextColumn>
                        <c1ataGridTextColumn Binding="{Binding Status}" Header="用户状态" Width="*"></c1ataGridTextColumn>
                        <c1ataGridTextColumn Binding="{Binding DefaultUserGroup}" Header="用户职责" Width="*"></c1ataGridTextColumn>
                        <c1ataGridTemplateColumn Header="所属部门">
                            <c1ataGridTemplateColumn.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");
            }
        }


2 个回复

倒序浏览
波波虎
注册会员   /  发表于: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 会自动更新为选中行的数据。

评分

参与人数 1金币 +300 收起 理由
Richard.Ma + 300

查看全部评分

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-23 09:47:45
板凳
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部