[英]GridView Row Does not get select or Affected When Checkbox checked on Grid
我正在使用C#将WPF申请表与Telerik Gridview一起使用。
在那个Gridview中,我使用Data template插入了复选框。
它创建了,但是当我单击或选中复选框时,当前行没有被选中。
我怎么解决这个问题?
请任何人告诉我这个问题的解决方案。
我在网格中创建复选框的xaml代码是:
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<CheckBox Name="CheckBox" IsChecked="{Binding IsSelected,UpdateSourceTrigger=PropertyChanged}" Click="CheckBox_Click" />
</StackPanel>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
在该复选框中,我创建了click事件。
而且我也想知道在checkbox click事件中gridview中CheckBox Placed行的当前行号 。 给我一些建议。
这是我的CheckBox Click事件代码:
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
CheckBox selectedCheckbox = (CheckBox)sender;
//this.selectedCasePackRadGrid -- This is my gridview
// Here I want to get the selected row number
}
提前致谢。
首先,我看不到您实际将行设置为“已Selected
。
您的绑定当前正在您的DataContext中设置一个名为IsSelected
的属性。 如果此属性确实存在,则可以GridViewRow.IsSelected
样式将其绑定到GridViewRow.IsSelected
<Style TargetType="{x:Type telerik:GridViewRow}">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
如果数据对象中不存在该对象,则需要使用RelativeSource
绑定来查找GridViewRow
并绑定到其IsSelected
属性
Checked="{Binding RelativeSource={RelativeSource AncestorType={x:Type telerik:GridViewRow}}, Path=IsSelected}"
至于查找行号,我知道没有RowIndex
属性可用于查找行号。 一种替代方法是获取GridView的ItemsSource
并调用IndexOf(dataobject)
,但这确实打破了MVVM层的分离
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
CheckBox checkBox = (CheckBox)sender;
var dataItem = checkBox.DataContext as MyDataItem;
var parentDataObject = myGridView.ItemsSource as SomeDataObject;
if (dataItem == null || parentDataObject == null)
return;
var index = parentDataObject.SomeCollection.IndexOf(dataItem);
// Do something with index
}
还有其他选择,例如将AlternationCount
设置为比行数更高的值,并访问GridViewRow.AlternationIndex
,尽管我不知道这是否适用于Telerik的GridView
但是也许您能做的最好的事情就是评估您实际需要索引的内容,并查看是否可以使用其他替代方法来完成所需的操作。 例如,如果要将选定行的索引传递给按钮命令,最好将SelectedItem
作为CommandParameter传递。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.