Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 手机不工作_C#_Wpf_Datagrid_Cell_Edit - Fatal编程技术网

C# 手机不工作

C# 手机不工作,c#,wpf,datagrid,cell,edit,C#,Wpf,Datagrid,Cell,Edit,我有一个datagrid,我想在其中控制输入的值为数字 因此,当我输入错误的值时,如图所示 我想恢复以前的值 为此,我需要捕获新输入的值,但当我这样做时 您可以看到,在编辑之前,我仍然获得旧值。 那么,我该怎么做才能得到新输入的值,在按下ENTER键后必须对其进行分析呢?使用CellEditingTemplate如: <DataGridTemplateColumn> <DataGridTemplateColumn.CellTemplate>

我有一个datagrid,我想在其中控制输入的值为数字

因此,当我输入错误的值时,如图所示

我想恢复以前的值

为此,我需要捕获新输入的值,但当我这样做时

您可以看到,在编辑之前,我仍然获得旧值。
那么,我该怎么做才能得到新输入的值,在按下ENTER键后必须对其进行分析呢?

使用
CellEditingTemplate
如:

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Age}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBox LostFocus="TextBox_LostFocus" Background="Aquamarine" Text="{Binding Age, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

使用
CellEditingTemplate
如:

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Age}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBox LostFocus="TextBox_LostFocus" Background="Aquamarine" Text="{Binding Age, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

如果将
ObservableCollection
用作
DataGrid
ItemsSource
并绑定到
YourClass
属性,您可以在属性setter发生更改之前获取新值。由于这是函数private DataView convertfrommatrixtodatable(string[,]matrix)的结果导致我被迫使用数据表也许最好检查该值是否为
整数
,如果它是
整数
,则允许输入数据表或集合,但它不满足,在CellEditEnding上,我们总是得到当前值。你能告诉我们你的datagrid代码@Patrick吗?如果你将使用
ObservableCollection
作为
datagrid
ItemsSource
并绑定到
YourClass
属性,您可以在属性setter发生更改之前获取新值。由于这是函数private DataView convertfrommatrixtodatable(string[,]matrix)的结果导致我被迫使用数据表也许最好检查该值是否为
整数
,如果它是
整数
,则允许输入数据表或集合,但它不满足,在CellEditEnding上,我们总是得到当前值。你能告诉我们你的datagrid代码@Patrick吗?