子视图上的GridViewDataColumn SourceUpdated

时间:2014-01-30 06:05:25

标签: .net wpf binding telerik radgridview

我正在使用caliburn micro和Telerik控件进行应用。

我有一个RadGrivView绑定到PurchaseDetails的集合,其中包含行的购买价格的可编辑列。绑定在更新PurchaseDetails对象上的PurchasePrice值时正常工作,但是我需要更新View上绑定到其他对象的其他值。

每当PurchasePrice更新时,我想在模型上引发一个事件。 我已经尝试过NotifyOnSourceUpdated,在列和网格级别没有运气。

<telerik:RadGridView Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2"
                             AutoGenerateColumns="False"
                             ShowGroupPanel="False"
                             ItemsSource="{Binding PurchaseDetails}">
            <telerik:RadGridView.Columns>
                <telerik:GridViewDataColumn DataFormatString="N2" 
                                             SourceUpdated="FrameworkContentElement_OnSourceUpdated"
                                            TargetUpdated="FrameworkContentElement_OnTargetUpdated"
                                            DataMemberBinding="{Binding .PurchasePrice, Mode=TwoWay, 
                                               NotifyOnSourceUpdated=True,NotifyOnTargetUpdated=True}"/>
                <telerik:GridViewDataColumn DataFormatString="N2" 
                                            DataMemberBinding="{Binding .Amount.Value}" IsReadOnly="True" />
            </telerik:RadGridView.Columns>
        </telerik:RadGridView>

1 个答案:

答案 0 :(得分:0)

INotifyPropertyChanged Interface是(部分)为此目的而设计的。如果您在PurchaseDetails课程中正确实施,那么您将能够处理该对象上的INotifyPropertyChanged.PropertyChanged事件:

SelectedPurchaseDetail.PropertyChanged += Detail_PropertyChanged;

...

private void Detail_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "PurchasePrice")
    {
        // PurchasePrice was changed... update other view model properties here
    }
}