gpt4 book ai didi

c# - 修改 Silverlight DataGrid 中的父数据行

转载 作者:行者123 更新时间:2023-11-30 22:15:32 25 4
gpt4 key购买 nike

我在 SL5 中有一个数据网格,项目源是一个自定义类的列表。除了一个列之外,所有列都是常规的 DataGridTextColumns,除了绑定(bind)到作为数据源的类的属性之外,没有什么更漂亮的了。但是,其中一列是包含 CheckBox 的 DataGridTemplateColumn。当复选框被选中/取消选中时,我试图修改项目源中的特定底层元素。如何访问相关复选框所属的特定元素?

我的网格定义如下:

      <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>

为了在初始绑定(bind)时选中/取消选中复选框,我制作了一个转换器来执行此操作:

  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 本身,我不知道如何获取复选框绑定(bind)到的实际数据项:

      private void ToggleButton_OnChecked(object sender, RoutedEventArgs e)
{
var detail = (BackupExceptionDetail)sender; // <--- dies here, as the sender is a checkbox
detail.IsApproved = true;
}

最佳答案

您应该能够使用 checkBox.DataContext 获取它绑定(bind)到的对象。

关于c# - 修改 Silverlight DataGrid 中的父数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17889900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com