C# WPF多绑定.Net Framework 4.0
我有以下DataGridTemplate列: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
<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的消息是什么?