![](/img/trans.png)
[英]Is it possitble to get SelectionIndex of DataGridTextColumn when its is in editing Mode(Not SelectedIndex) in WPF?
[英]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模式。
感謝您的任何幫助。
您可以查看CellEditEnding
或RowEditEnding
解決了您的問題。
DoSomething
是ViewModel
的ICommand
。
<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.