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");
}
}
你可以通过设置 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 会自动更新为选中行的数据。 :hjyzw:
页:
[1]