设计时空引用错误
本文关键字:引用 错误 | 更新日期: 2023-09-27 17:51:01
在我的WPF应用程序中,我用
引用组合框的选定值{Binding Source={x:Reference myComboBox} ,Path=SelectedItem}
我在DataGrid Columns中这样做。
在设计时(而不是运行时)抛出空引用异常。是否有任何方法来解决这个问题,或者我可以访问选定的项目以外的方式?
下拉列表框:
<ComboBox x:Name="myComboBox"
ItemsSource="{Binding MyItems}"
DisplayMemberPath="Name"
SelectedItem="{Binding SelectedItem}"
/>
DataGridTextColumn:
<DataGridTextColumn HeaderStyle="{DynamicResource myStyle}" Visibility="{Binding Source={x:Reference myComboBox} ,Path=SelectedItem, Converter={StaticResource ConvertSomething}, ConverterParameter={StaticResource Something}}" Header="MyHeader " Width="*" Binding="{Binding Path=MyBindingName}" />
在这种情况下,尝试使用继承DataContext
的冷冻类型的proxy
。现在我们不需要引用ComboBox
因为我们有一个属性在DataContext
中。我认为,这是一个更通用的解决方案:
BindingProxy
public class BindingProxy : Freezable
{
#region Overrides of Freezable
protected override Freezable CreateInstanceCore()
{
return new BindingProxy();
}
#endregion
public object Data
{
get
{
return (object)GetValue(DataProperty);
}
set
{
SetValue(DataProperty, value);
}
}
public static readonly DependencyProperty DataProperty = DependencyProperty.Register("Data",
typeof(object),
typeof(BindingProxy));
}
XAML
<DataGrid>
<DataGrid.Resources>
<local:BindingProxy x:Key="bindingProxy" Data="{Binding}" />
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Visibility="{Binding Path=MySelectedItem,
Converter={StaticResource ConvertSomething},
ConverterParameter={StaticResource Something}}"
Source={StaticResource bindingProxy}}" />
</DataGrid.Columns>
</DataGrid>
何不试试{Binding ElementName=myComboBox ,Path=SelectedItem}