Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF多绑定.Net Framework 4.0_C#_Xaml_Binding_Converter - Fatal编程技术网

C# WPF多绑定.Net Framework 4.0

C# WPF多绑定.Net Framework 4.0,c#,xaml,binding,converter,C#,Xaml,Binding,Converter,我有以下DataGridTemplate列: <DataGridTemplateColumn x:Name="specialtiesColumn" Header="Specialties" MinWidth="170"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox ItemsSource="{Binding Path=Data

我有以下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;
    }
}
公共对象转换(对象[]值,类型targetType,对象参数,CultureInfo区域性) { 尝试 { HashSet specialties=(HashSet)值[0]; 字符串专业=(字符串)值[1]; foreach(专业中的专业) { 如果(s.Name==专业) 返回true; } 返回false; } 捕获(例外) { 返回false; } }
这适用于使用.Net Framework 4.5的计算机,但在尝试仅使用.Net Framework 4.0加载时会崩溃。该项目是针对.Net Framework 4.0的。

我想原因是多重绑定使用的是RelativeSource,而DataGridColumn不是visual tree的一部分。他们必须已修复4.5中的列绑定行为。我的代码也遇到了同样的问题,如下所示:

<DataGridTextColumn.Binding>
    <MultiBinding Converter="{StaticResource directionConverter}">
        <MultiBinding.Bindings>
            <Binding ElementName="clientPerspective" Path="IsChecked"/>
            <Binding Path="Direction"/>
        </MultiBinding.Bindings>
    </MultiBinding>
</DataGridTextColumn.Binding>`

`

crash的消息是什么?