繁体   English   中英

在网格上选中复选框时,GridView行不会被选中或不受影响

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM