【问题标题】:DataGrid generating newrow when checking the radiobutton检查单选按钮时DataGrid生成新行
【发布时间】:2011-10-28 00:12:39
【问题描述】:

我正在尝试使用绑定到具有两个参数的对象集合的数据网格。数据网格必须允许我插入新行,从而创建新对象。

绑定到第一个参数的第一列是文本列。 第二个应该是一个模板列,包含一个单选按钮,它使用 BoolToInt 转换器(不相关)将值设置为第二个属性。

当在网格中显示已经存在的行时,它还会显示一个用于插入新对象的空行。因此,我们有两种在列表/网格中插入新对象的可能性: 1. 我们首先在文本栏中输入一些内容,然后我们检查单选按钮 2.首先我们检查单选按钮,然后我们在文本列中输入一些内容

第一个选项,效果很好。第二个没有: 当我检查单选按钮然后在文本列中输入一些内容时,单选按钮就会被取消选中。实际上它消失了,因为当我开始输入文本时,在网格中创建了一个新行,并带有一个新的单选按钮。我第一次检查的那个只是空行上的那个,它允许我添加新行,并且每当我插入新行时它都会一直到列表的底部。

我认为这应该通过在检查单选按钮时强制网格创建一个新行来解决,就像在文本列中键入时一样。

这是数据网格:

<DataGrid ItemsSource="{Binding Path=Rows}" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Path=param1, TargetNullValue=''}">
            </DataGridTextColumn>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <RadioButton VerticalAlignment="Center" IsChecked="{Binding Path=param2, Converter={StaticResource RPLBoolToIntConverter}, ConverterParameter=1}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>            
    </DataGrid>

这是后面的代码,创建了一些要显示的对象:

CPL cpl = new CPL();            
        cpl.Rows = new List<CPLRow>()
        {
            new CPLRow(){ param1=80001, param2=20304},
            new CPLRow(){ param1=80002, param2=20304},
            new CPLRow(){ param1=80003, param2=20304}
        };
        DataContext = cpl;

有没有办法让它对检查单选按钮做出反应。我正在考虑一个示例,我只想使用单选按钮,每当我检查一个单选按钮时,都会创建一个新行,同时仍能正确绑定到集合。

提前致谢!

【问题讨论】:

  • 您在检查单选按钮并将元素添加到网格时尝试过 DataGridRowEditEndingEventArgs 吗?

标签: wpf datagrid binding radio-button


【解决方案1】:

我不同意你的说法,我刚刚检查的那个现在在下一个空行上。它仍然是同一个按钮,但还有另一行。我认为您的问题是在按钮失去焦点之前检查/检查事件不会触发(例如,您转到文本框)。在绑定中,您需要设置 UpdateSourceTrigger=PropertyChanged。

【讨论】:

    猜你喜欢
    • 2016-06-06
    • 2018-10-13
    • 1970-01-01
    • 2019-05-29
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2019-11-20
    相关资源
    最近更新 更多