.net 如何在数据网格中的模板列中触发文本更改事件

.net 如何在数据网格中的模板列中触发文本更改事件,.net,silverlight,xaml,datagrid,silverlight-4.0,.net,Silverlight,Xaml,Datagrid,Silverlight 4.0,我不熟悉Silveligt和数据网格。Iam正在尝试为数据网格中的模板列触发文本更改事件。但它不起作用。像这样的事件正在发生 BeginningEdit="dataGrid1_BeginningEdit" TextInputStart="dataGrid1_TextInputStart" TextInputUpdate="dataGrid1_TextInputUpdate" PreparingCellForEdit="dataGrid1_PreparingCellForEdit" 我错过什

我不熟悉Silveligt和数据网格。Iam正在尝试为数据网格中的模板列触发文本更改事件。但它不起作用。像这样的事件正在发生

BeginningEdit="dataGrid1_BeginningEdit" 
TextInputStart="dataGrid1_TextInputStart"
TextInputUpdate="dataGrid1_TextInputUpdate" PreparingCellForEdit="dataGrid1_PreparingCellForEdit" 
我错过什么了吗?Iam从列表绑定数据

这是xaml

    <sdk:DataGrid AutoGenerateColumns="False" Height="100" HorizontalAlignment="Left" Margin="142,96,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="120" BeginningEdit="dataGrid1_BeginningEdit"  TextInputStart="dataGrid1_TextInputStart" TextInputUpdate="dataGrid1_TextInputUpdate" PreparingCellForEdit="dataGrid1_PreparingCellForEdit" LoadingRow="dataGrid1_LoadingRow">


<sdk:DataGrid.Columns>
        <sdk:DataGridTemplateColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="Test" Width="Auto"   >
            <sdk:DataGridTemplateColumn.CellTemplate>                        
                <DataTemplate>
                    <TextBox Text="{Binding Urgency}"  />
                </DataTemplate>
            </sdk:DataGridTemplateColumn.CellTemplate>

        </sdk:DataGridTemplateColumn>
        <sdk:DataGridTemplateColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="Column2" Width="Auto" >
            <sdk:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBox />
                </DataTemplate>
            </sdk:DataGridTemplateColumn.CellTemplate>
        </sdk:DataGridTemplateColumn>
    </sdk:DataGrid.Columns>


</sdk:DataGrid>

右键单击silverlight datagrid转到->属性,然后单击要添加选择更改事件的文本框,在属性工具栏中找不到文本更改事件

然后,它将自动为更改的文本生成一个事件

  private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {

        }

我认为您应该考虑将您的绑定更改为:

<TextBox Text="{Binding Urgency, Mode=TwoWay}"  />


然后处理由紧急情况触发的OnPropertyChanged事件。

CellTemplate
for
DataGrid
只是一个显示模板
CellEditingTemplate
实际上会根据您的需求进行操作

下面的代码将触发
textchange
事件

<sdk:DataGridTemplateColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="Test" Width="Auto">
    <sdk:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Urgency}"/>
        </DataTemplate>
    </sdk:DataGridTemplateColumn.CellTemplate>
    <sdk:DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Urgency, Mode=TwoWay}" TextChanged="TextBox_TextChanged"/>
        </DataTemplate>
    </sdk:DataGridTemplateColumn.CellEditingTemplate>
</sdk:DataGridTemplateColumn>


希望这有帮助

您是否尝试创建一个绑定(或手动编码)以处理DataGrid的“SelectedItem”,然后附加到“PropertyChanged”事件的属性? 然后,您可以“嗅探”任何选定项的更改,并执行任何您喜欢的操作

另一个技巧是在文本框上的任何绑定中也定义“UpdateSourceTrigger=PropertyChanged”。
这意味着数据绑定更改是在文本框失去焦点时(默认情况下)更改文本时完成的。

您是否收到异常?谢谢Glenn。不。断点从未在事件句柄内命中。您尝试过吗?谢谢Sajeetharan。。实际上我已经试过了,但是没有更新我发布的xaml。但这也不起作用。该事件也未达到断点。您需要删除该文本框的其他事件才能使其正常工作!谢谢..但是我没有附加任何其他事件..但是只有TextChanged事件您提到您有网格事件,最好删除这些事件并检查