簡體   English   中英

編輯DataGridTextColumn時在當前行上執行方法

[英]Executing a method on current row when editing a DataGridTextColumn

我目前有一個綁定到Person對象的DataGrid:

<DataGrid ItemsSource="{Binding Person}" Width="1700" Height="840" AutoGenerateColumns="False" CanUserAddRows="true" ...>
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Header="Select" Binding="{Binding IsChecked}"/>
        <DataGridTextColumn Header="Gender" Binding="{Binding Gender}" IsReadOnly="True"/>
        <DataGridTextColumn Header="Username" Binding="{Binding Username}" />
        ...
    </DataGrid.Columns>
</DataGrid>

當用戶編輯網格並添加新的用戶名時,我需要觸發一種方法,該方法將轉到數據庫並根據新的用戶名填充其他信息(性別等)。

當前,用戶輸入用戶名,選中與該行關聯的復選框,然后單擊按鈕以填充其余數據。 我正在嘗試擺脫這些額外的2個步驟,因為這應該會自動發生。

我為此使用MVVM模式。

感謝您的任何幫助。

您可以查看CellEditEndingRowEditEnding解決了您的問題。

DoSomethingViewModelICommand

   <DataGrid xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" ...>
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="RowEditEnding">
                <i:InvokeCommandAction Command="{Binding DoSomething}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
        ...

您必須從Microsoft的網站下載Blend Sdk

當您使用MVVM模式時,我假設“ Person”類將具有“ Username”的屬性。 實現INotifyPropertyChanged接口並將屬性更改為普通屬性(如果它是自動屬性),並在通過所需的任何檢查通知該屬性后,調用數據庫更新。 像這樣:

    private string username;
    public string Username
    {
        get
        {
            return username;
        }
        set
        {
            username= value;
            NotifyPropertyChanged("Username");
            if (<condition>)
               PopulateData();
        }
    }

在xaml中進行以下更改:

<DataGridTextColumn Header="Username" Binding="{Binding Username, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" />

單元格失去焦點后,這將立即調用Username屬性的setter方法,並填充數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM