2
我在SL5中有一個數據網格,並且項目源是一個自定義類的列表。除一個以外的所有列都是常規DataGridTextColumns,除了綁定到作爲數據源的類的屬性外,沒有任何更新。但是,其中一列是包含CheckBox的DataGridTemplateColumn。當複選框被選中/取消選中時,我試圖修改項目源中特定的底層元素。如何訪問相關複選框所屬的特定元素?修改Silverlight DataGrid中的父數據行
我有我的網格定義,像這樣:
<data:DataGrid x:Name="ExceptionGrid" AutoGenerateColumns="False" CanUserSortColumns="True" Grid.Row="1" Grid.Column="0" VirtualizingStackPanel.VirtualizationMode="Recycling">
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="Policy" Binding="{Binding PolicyName}" />
<data:DataGridTextColumn Header="Retention" Binding="{Binding Retention,Converter={StaticResource BackupRetentionConverter}}" />
<data:DataGridTemplateColumn Header="Approved?">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding .,Converter={StaticResource ApprovalConverter}}" HorizontalAlignment="Center" VerticalAlignment="Center" Checked="ToggleButton_OnChecked" Unchecked="ToggleButton_OnUnchecked" />
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
<data:DataGridTextColumn Header="Exception" Binding="{Binding ExceptionMessage}" />
</data:DataGrid.Columns>
使複選框選中/取消初始綁定,我做了一個轉換器,做到這一點:
public class ApprovalConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var detail = (BackupExceptionDetail) value;
if (detail.IsApproved) return true;
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
的問題是,當我的Checked事件觸發,發件人是CheckBox本身,我不知道如何獲取複選框綁定的實際數據項:
private void ToggleButton_OnChecked(object sender, RoutedEventArgs e)
{
var detail = (BackupExceptionDetail)sender; // <--- dies here, as the sender is a checkbox
detail.IsApproved = true;
}
Bam!作品!只要stackoverflow讓我接受你的答案,就是這樣。謝謝! –