我有一個DataGrid包含設置對象的信息。目前DataGrid和設置對象之間存在雙向綁定。不過,如果用戶單擊「保存」按鈕,我想在其中放置一個「保存」按鈕,該按鈕僅將DataGrid中所做的更改綁定到對象。但是,我不知道如何調用UpdateSource()爲我的DataGrid的特殊情況。如何調用UpdateSource()以在DataGrid上進行顯式綁定?
這裏是我的xaml.cs代碼:
public void LoadDataFields(Data d)
{
Grid1.ItemsSource = d.Fields;
}
private void SaveChanges(object sender, RoutedEventArgs e)
{
BindingExpression be = Grid1.GetBindingExpression(DataGrid.ItemsSourceProperty);
be.UpdateSource();
}
這裏是我的XAML代碼:
<DataGrid x:Name="Grid1"
IsReadOnly="False"
Height="360"
Margin="20,15,20,15"
VerticalAlignment="Top"
AutoGenerateColumns="False"
CanUserAddRows="False" SelectionUnit="Cell"
ItemsSource="{Binding data}"
>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Field">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=name, Mode=TwoWay, UpdateSourceTrigger=Explicit}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Length of Field">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=length, Mode=TwoWay, UpdateSourceTrigger=Explicit}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
有一種簡單的方法來調用UpdateSource(),所以,如果綁定僅發生保存按鈕被點擊?我的猜測是,我只是把GetBindingExpression方法放在了錯誤的屬性中。
使用TextBox.TextProperty不適用於此,我已經嘗試過。我正在考慮做二次收集,這可能也會起作用。 – reubonwry