代码之家  ›  专栏  ›  技术社区  ›  Bassie

CellEditEnding未向SelectEditem绑定发送新值

  •  0
  • Bassie  · 技术社区  · 6 年前

    我要解雇一个 ICommand 当我的手机换了 DataGrid :

    页面库.xaml

    <DataGrid ItemsSource="{Binding StockQuantities}" 
                SelectedItem="{Binding SelectedStockQuantity}"
                x:Name="dataGridConsignments" 
                Margin="10,47,10,9.6"
                ColumnWidth="*" AutoGenerateColumns="False">
    
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="CellEditEnding">
                <i:InvokeCommandAction Command="{Binding Test}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
    
        <DataGrid.Columns>
            <DataGridTextColumn IsReadOnly="True" Header="Bell Number" Width="100" Binding="{Binding BellNumber}"></DataGridTextColumn>
            <DataGridTextColumn IsReadOnly="True" Header="Description" Binding="{Binding Description}"></DataGridTextColumn>
            <DataGridTextColumn IsReadOnly="False" Header="Quantity" Width="100" Binding="{Binding Quantity}" ></DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>
    

    但是当 伊克曼 火,我看得出来 SelectedStockQuantity 仍然包含旧的 Quantity :

    pageStockViewModel.cs

    public StockQuantityViewModel SelectedStockQuantity { get; set; }
    private ICommand test;
    public ICommand Test
    {
        get
        {
            return test
                ?? (test = new ActionCommand(() =>
                {
                    var stockQ = StockQuantities.FirstOrDefault(sq => SelectedStockQuantity.Id == sq.Id);
                    Commands.UpdateStockQuantity(stockQ.BellNumber, SelectedStockQuantity.Quantity);
                }));
        }
    }
    

    如果我在没有导航到新页面的情况下再次更改单元格,则将应用上一个值(我可以在中看到它 SelectedStockQuantity.Quantity )

    为什么会这样?如何在我的 伊克曼 ?

    库存数量视图模型

    class StockQuantityViewModel : BaseViewModel
    {
        public int Id { get; set; }
        public StockQuantity StockQuantity { get; set; }
        public string BellNumber { get; set; }
        public string ArtemisNumber { get; set; }
        public int Quantity { get; set; }
        public string Description { get; set; }
    
        public StockQuantityViewModel(StockQuantity stockQuantity)
        {
            StockQuantity = stockQuantity;
    
            Id = stockQuantity.id;
            BellNumber = stockQuantity.Part.BellNumber;
            ArtemisNumber = stockQuantity.Part.ArtemisNumber;
            Quantity = stockQuantity.Quantity;
            Description = stockQuantity.Part.Description;
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Bassie    6 年前

    在做了这项改变之后似乎正在工作:

    <DataGridTextColumn IsReadOnly="False" Header="Quantity" Width="100" 
        Binding="{Binding Quantity,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" >
    </DataGridTextColumn>
    

    我把这个加到 Binding :

    Mode=TwoWay,UpdateSourceTrigger=PropertyChanged