UWP Telerik RadDataGrid不允许我通过按Enter键来结束行编辑

时间:2017-11-22 19:11:48

标签: xaml uwp telerik grid uwp-xaml

我无法在Telerik的UWP RadDataGrid中结束对行的编辑。填充数据后,单击一个单元格开始编辑。编辑完行后,我按Enter键完成编辑但仍处于编辑模式。单击另一行中的单元格将结束编辑,新数据将保持不变,但绑定的集合不会更新。下面是我正在使用的网格的屏幕截图: 这是我页面中的XAML代码:

<tg:RadDataGrid ColumnDataOperationsMode="Flyout"  x:Name="grid" ItemsSource="{x:Bind ViewModel.Source}" UserEditMode="Inline"  Grid.ColumnSpan="4" Grid.Row="1"/>

enter image description here

我真的很感激一些帮助。非常感谢提前!

1 个答案:

答案 0 :(得分:1)

  

编辑完行后,我按Enter键完成编辑,但仍处于编辑模式。

我创建了一个16299 UWP项目来测试并安装Telerik.UI.for.UniversalWindowsPlatform(1.0.0.7)包。然后,我可以重现这个问题。但是,如果我将项目的目标版本更改为&#34; 15063&#34;,当我点击Enter键时,它将成功提交编辑操作。因此,这个telerik控件在16299运行时可能会出现一些问题。您可以将此问题报告给他们的Telerik官方网站。

由于UWP的Telerik控件是开源的,您也可以自己检查其源代码并解决此问题,然后您可以自己编译自定义版本并在项目中使用它。

我在这行代码中看到了有关此问题的相关代码:https://github.com/telerik/UI-For-UWP/blob/master/Controls/Grid/Grid.UWP/View/RadDataGrid.Manipulation.cs#L392也许,您可以查看它。

  

单击另一行中的单元格结束编辑,新数据完好无损,但绑定的集合不会更新。

我没有看到你的代码,所以我不知道问题出在哪里。但它在我身边运作良好。您可以查看我的简单代码示例以供参考:

<telerikGrid:RadDataGrid x:Name="DataGrid" ItemsSource="{x:Bind ls}" UserEditMode="Inline"></telerikGrid:RadDataGrid>
public sealed partial class MainPage : Page
{
    public ObservableCollection<Data> ls { get; set; }
    public MainPage()
    {
        this.InitializeComponent();
        ls = new ObservableCollection<Data>() {new Data { Country = "India", Capital = "New Delhi"},
 new Data { Country = "South Africa", Capital = "Cape Town"},
 new Data { Country = "Nigeria", Capital = "Abuja" },
 new Data { Country = "Singapore", Capital = "Singapore" }  };
    }
}

public class Data:INotifyPropertyChanged
{
    private string _Country;
    public string Country
    {
        get { return _Country; }
        set
        {
            _Country = value;
            RaisePropertyChange("Country");
        }
    }

    private string _Capital;
    public string Capital
    {
        get { return _Capital; }
        set
        {
            _Capital = value;
            RaisePropertyChange("Capital");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void RaisePropertyChange(string propertyName)
    {
        if (PropertyChanged!= null)
        {
            PropertyChanged(this,new PropertyChangedEventArgs(propertyName));
        }
    }
}