4

次のDataGridTemplate列があります。

<DataGridTemplateColumn x:Name="specialtiesColumn" Header="Specialties" MinWidth="170">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="{Binding Path=DataContext.Specialties, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}}">
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Height="17" VerticalAlignment="Center" Orientation="Horizontal">
                            <CheckBox Width="20">
                                <CheckBox.IsChecked>
                                    <MultiBinding Converter="{StaticResource ProviderSpecialtyIsInSpecialtiesConverter}">
                                        <Binding RelativeSource="{RelativeSource FindAncestor, AncestorType=ComboBox}" Path="DataContext.Specialties" />
                                        <Binding Path="Name" />
                                    </MultiBinding>
                                </CheckBox.IsChecked>
                            </CheckBox>
                            <TextBlock Text="{Binding Name}" Width="130" />
                        </StackPanel>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

私がやろうとしているのは、データグリッド内にコンボボックスの列があり、各コンボボックスにはいくつかのチェックボックスがあります。データグリッドの各行は病院を表します。コンボボックスには、病院の専門分野が表示され、ユーザーはこれらの選択を変更できる必要があります。

これはコンバーターのコードです:

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
    try
    {
        HashSet<Specialty> specialties = (HashSet<Specialty>)values[0];
        string specialty = (string)values[1];

        foreach (Specialty s in specialties)
        {
            if (s.Name == specialty)
                return true;
        }

        return false;
    }
    catch (Exception)
    {
        return false;
    }
}

これは、.Net Framework 4.5を搭載したコンピューターで機能しますが、.NetFramework4.0のみを搭載してロードしようとするとクラッシュします。このプロジェクトは、.NetFramework4.0を対象としています。

4

1 に答える 1