RibbonButton vs Button - 拒绝DataTable中的更改时会产生不同的结果

时间:2016-03-03 20:04:41

标签: c# wpf mvvm-light infragistics

我有一个XamDataGridDataTable作为来源:

dataPresenter:XamDataGrid Grid.Row="1" DataSource="{Binding TestData}"     GroupByAreaLocation="None" 

我使用MVVM Light来处理命令。在我的视图模型中,我有:

public class MainViewModel: ViewModelBase
{            
    public RelayCommand OnCancel { get; set; }
    private DataTable _testData;
    public DataTable TestData
    {
        get { return _testData; }
        set { Set(() => TestData, ref _testData, value); }
    }
    public MainViewModel()
    {
        OnCancel = new RelayCommand(Cancel);
    }
    private void Cancel()
    {
        TestData.RejectChanges();
    }
}

要处理我想要使用Windows功能区的命令:

<r:Ribbon Grid.Row="0" >
    <r:RibbonTab >
        <StackPanel Orientation="Horizontal">
            <r:RibbonButton Label="Get Data" Command="{Binding OnGetData}"/>
            <r:RibbonButton Label="Cancel" Command="{Binding OnCancel}"/>
        </StackPanel>
    </r:RibbonTab>
</r:Ribbon>

<!--<StackPanel Orientation="Horizontal">
    <Button Content="Get Data" Command="{Binding OnGetData}" Margin="0,0,20,0" Height="40"/>
    <Button Content="Cancel" Command="{Binding OnCancel}" Height="40"/>
</StackPanel>-->

使用RibbonButtonButton时,我的行为会有所不同。我想要的是拒绝XamDataGrid所做的任何更改。当我使用Button时,DataTableXamDataGrid相应更新将被拒绝。当我更改代码以便RibbonButton执行Cancel方法时,这不会发生。这种行为似乎是零星的。即使我在XamDataGrid中看到更改被拒绝,DataTable也未正确更新。为什么会发生这种情况?

0 个答案:

没有答案