WPF 多重绑定 .Net Framework 4.0
Posted
技术标签:
【中文标题】WPF 多重绑定 .Net Framework 4.0【英文标题】:WPF Multibinding .Net Framework 4.0 【发布时间】:2012-11-11 04:25:21 【问题描述】:我有以下 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 的计算机,但在尝试仅使用 .Net Framework 4.0 加载时会崩溃。该项目面向 .Net Framework 4.0。
【问题讨论】:
您在崩溃时收到的信息是什么? 【参考方案1】:我想原因是 MultiBinding 使用的是 RelativeSource,而 DataGridColumn 不是可视树的一部分。他们必须在 4.5 中修复了列绑定行为。我的代码看起来像这样,我遇到了同样的问题:
<DataGridTextColumn.Binding>
<MultiBinding Converter="StaticResource directionConverter">
<MultiBinding.Bindings>
<Binding ElementName="clientPerspective" Path="IsChecked"/>
<Binding Path="Direction"/>
</MultiBinding.Bindings>
</MultiBinding>
</DataGridTextColumn.Binding>`
【讨论】:
以上是关于WPF 多重绑定 .Net Framework 4.0的主要内容,如果未能解决你的问题,请参考以下文章
WPF:多重绑定不使用 OnPropertyChanged 更新?
2021-09-15 WPF上位机 17-属性绑定(多重绑定)
WPF 和.NET的关系 我想知道WPF有几个版本 他们对应的Framework又是哪个版本 单独.NET 4.0可以做WPF吗