Silverlight控件在不应该更新binded属性时更新

时间:2013-02-07 17:54:48

标签: silverlight binding datagrid silverlight-4.0 updatesourcetrigger

我在datagrid DataGridTemplateColumn.CellEditingTemplate中有自定义控件:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=Items}">
   <DataGrid.Columns>                                   
      <data:DataGridTemplateColumn Header="Column1" >
         <data:DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
               <sdk:Label Content="{Binding Path=Description}"/>
            </DataTemplate>
         </data:DataGridTemplateColumn.CellTemplate>
         <data:DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
               <common:MyControl SelectedObject="{Binding Path=SelectedItem, Mode=TwoWay, UpdateSourceTrigger=Explicit}"/>
            </DataTemplate>
         </data:DataGridTemplateColumn.CellEditingTemplate>
      </data:DataGridTemplateColumn>                                    
   </DataGrid.Columns>
</DataGrid>

在控制范围内我只有一个地方可以更新SelectedObject依赖属性:

BindingExpression expressionObject = GetBindingExpression(SelectedObjectProperty);
if (expressionObject != null)
{
    expressionObject.UpdateSource();
}

此代码在LostFocus事件中调用。

问题是:UpdateSource方法只调用一次(使用调试器检查)SelectedItem获取更新值(相同)两次!我现在处于亏损状态,因为它不应该是这样的。我错过了什么吗?

编辑:我没有使用任何MVVM框架。 VS2012调试callstack显示第一次更新是由UpdateSource()调用启动的,但第二次更新是不可能的。

0 个答案:

没有答案