1

我是 Silverligt 和 Data Grid 的新手。我正在尝试为 Data Grid 中的 Template Column 触发 Text Changed 事件。但它不起作用。像这样的 Niether Grid 事件正在触发。

BeginningEdit="dataGrid1_BeginningEdit" 
TextInputStart="dataGrid1_TextInputStart"
TextInputUpdate="dataGrid1_TextInputUpdate" PreparingCellForEdit="dataGrid1_PreparingCellForEdit" 

我错过了什么吗?我正在绑定列表中的数据。

这是xml

    <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>
4

4 回答 4

1

CellTemplateforDataGrid只是一个显示模板。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>

希望这可以帮助!

于 2012-12-26T15:43:46.093 回答
1

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

在此处输入图像描述

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

  private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {

        }
于 2012-11-09T04:39:46.183 回答
0

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

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

于 2012-12-26T21:05:28.913 回答
0

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

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

然后处理由 Urgency 触发的 OnPropertyChanged 事件。

于 2012-11-09T13:12:38.797 回答