gpt4 book ai didi

c# - DataGrid 嵌套在 DataGrid 问题中

转载 作者:太空宇宙 更新时间:2023-11-03 23:05:13 27 4
gpt4 key购买 nike

我收到“在使用 ItemsSource 时操作无效。改为使用 ItemsControl.ItemsSource 访问和修改元素”错误,我不确定原因。

我正在尝试将数据网格嵌套在数据网格中。如果我只使用文本 block ,则没有问题,但是一旦我分配值并单击其中一个父数据网格元素,就会出现上述错误。

这是我的 xaml:

    <DataGrid Grid.Row="1" Name="dgSREducation" Background="White" AutoGenerateColumns="False" CanUserAddRows="False" HorizontalAlignment="Left">
<DataGrid.Columns>
<DataGridTextColumn Header="Description" Binding="{Binding Description}"/>
<DataGridTextColumn Header="Link" Binding="{Binding Link}"/>
<DataGridTextColumn Header="Type" IsReadOnly="True" Binding="{Binding Type}"/>
<DataGridCheckBoxColumn Header="Active" Binding="{Binding Active}"/>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel>
<DataGrid ItemsSource="{Binding Conditions}" AutoGenerateColumns="False" CanUserAddRows="False">
<DataGridTextColumn Header="Notification Type" IsReadOnly="True" Binding="{Binding Notification}"/>
<DataGridTextColumn Header="Value" Binding="{Binding Value}"/>
<DataGridTextColumn Header="Compare Type" IsReadOnly="True" Binding="{Binding Compare}"/>
<DataGridCheckBoxColumn Header="Active" Binding="{Binding Active}"/>
</DataGrid>
<TextBlock Text="{Binding Words}"></TextBlock>
</StackPanel>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
<DataGrid.Resources>
<Style TargetType="DataGridRow">
<EventSetter Event="MouseLeftButtonDown" Handler="Education_Click"/>
</Style>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{x:Static SystemColors.HighlightColor}"></SolidColorBrush>
</DataGrid.Resources>
</DataGrid>

我的类(class)是:

class SREducationData
{
public NamedIDData Type { get; set; }
public bool Active { get; set; }
public string Link { get; set; }
public string Description { get; set; }
public long ID { get; set; }
public ObservableCollection<ConditionData> Conditions { get; set; }

public string Words { get; set; }
}

和:

class ConditionData
{
public long ID { get; set; }
public NamedIDData Notification { get; set; }
public bool Active { get; set; }
public string Value { get; set; }
public NamedIDData Compare { get; set; }
}

当我的程序最初加载时,我通过执行 dgSREducation.ItemsSource = display; 在代码中设置 ItemSource其中显示为 ObservableCollection<SREducationData> display;

只要单击 dgSREducation 的其中一个元素,我就会收到错误消息,并且该元素下方会出现一个空白数据网格。对正在发生的事情有什么想法吗?

最佳答案

糟糕,您没有将嵌套数据网格的列放在 中。

改变:

<DataGrid ItemsSource="{Binding Conditions}" AutoGenerateColumns="False" CanUserAddRows="False">
<DataGridTextColumn Header="Notification Type" IsReadOnly="True" Binding="{Binding Notification}"/>
<DataGridTextColumn Header="Value" Binding="{Binding Value}"/>
<DataGridTextColumn Header="Compare Type" IsReadOnly="True" Binding="{Binding Compare}"/>
<DataGridCheckBoxColumn Header="Active" Binding="{Binding Active}"/>
</DataGrid>

收件人:

<DataGrid ItemsSource="{Binding Conditions}" AutoGenerateColumns="False" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Notification Type" IsReadOnly="True" Binding="{Binding Notification}"/>
<DataGridTextColumn Header="Value" Binding="{Binding Value}"/>
<DataGridTextColumn Header="Compare Type" IsReadOnly="True" Binding="{Binding Compare}"/>
<DataGridCheckBoxColumn Header="Active" Binding="{Binding Active}"/>
</DataGrid.Columns>
</DataGrid>

关于c# - DataGrid 嵌套在 DataGrid 问题中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41493703/

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