Sar*_*els 30 .net wpf xaml visual-studio-2010
当我尝试为我的XAML重新加载Designer时,我得到一个"对象引用没有设置为对象的实例"错误UserControl.Visual Studio突出显示以下行作为问题:
<local:TemplateDetail Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3"
Width="600" TemplateData="{Binding ElementName=cbo_templates,
Path=SelectedItem.Data, Mode=OneWay}"/>
Run Code Online (Sandbox Code Playgroud)
TemplateDetail是另一个UserControl.当我查看时TemplateDetail,它的Designer视图加载得很好,所以我认为那里没有问题.ComboBox我的XAML中有一个命名cbo_templates包含我的Template类的实例,它有一个Data属性(因此SelectedItem.Data).但是,如果我.Data从Path上面的XAML中删除,我仍然得到"对象引用"错误,所以我不认为问题是我正在尝试访问该Path属性null.这是我的ComboBoxXAML以防万一:
<ComboBox ItemsSource="{Binding Path=List}" Grid.Row="1" Grid.Column="3"
VerticalAlignment="Center" x:Name="cbo_templates" Width="250"
HorizontalAlignment="Left" DisplayMemberPath="Name"
SelectedValuePath="Name" SelectedIndex="0"/>
Run Code Online (Sandbox Code Playgroud)
获取此错误是一个真正的问题,因为设计视图无法加载,因此如果UserControl不运行应用程序,我无法看到我的样子.知道什么可能是错的吗?它构建良好,我没有看到构建输出中的任何绑定问题.
编辑: 这是两个UserControls 的构造函数代码:
UserControl带有"对象引用"错误的构造函数:
InitializeComponent();
grd_templateList.DataContext = this; // refers to containing <Grid> in XAML
Run Code Online (Sandbox Code Playgroud)
UserControl我正在尝试嵌入的构造函数,其Design视图加载正常的构造函数:
InitializeComponent();
grd_templateDetail.DataContext = this; // refers to containing <Grid> in XAML
Run Code Online (Sandbox Code Playgroud)
编辑:我if (null != grd_templateList)在设置DataContext属性之前尝试检查构造函数,但这没有帮助 - 重新加载Designer时仍然出现"对象引用"错误.
编辑:使用的List属性ComboBox是DependencyProperty.我在Register方法中设置了默认值:
public static readonly DependencyProperty ListProperty =
DependencyProperty.Register(
"List",
typeof(List<Template>),
typeof(TemplateList),
new PropertyMetadata(
new List<Template> { _defaultTemplate }
)
);
Run Code Online (Sandbox Code Playgroud)
即使我尝试List在我的构造函数中初始化UserControl,我仍然在重新加载Designer时遇到错误.我不认为问题List是null或者SelectedItem.Data是一条糟糕的道路.
编辑:好吧,即使只是这导致我的设计器无法加载,给出"对象引用"错误:
<local:TemplateDetail Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3"
TemplateData="{Binding}"/>
Run Code Online (Sandbox Code Playgroud)
显然,有些东西不喜欢TemplateData财产受到约束.
编辑:为了添加神秘感,我可以查看我的整体/主要的设计视图Window,其中包括UserControl其设计视图给我"对象参考"错误.O_O
NVM*_*NVM 33
亚历克斯说的是要走的路.但我认为理解他在说什么有点令人困惑.
假设您在Visual Studio中打开了项目,打开另一个Visual Studio实例并选择Debug-> Attach To Process.在打开的对话框中选择
XDesProc.exe(这是XAML UI设计器),用于VS2012和较新的或devenv.exe适用于较旧的VS版本.然后为用户控件执行"重新加载设计器"并查看第二个VS实例中的输出以检查错误究竟是什么.
它可能是用户控件的构造函数中的某些内容.VS2008 WPF设计器出现了一些问题.
在我们接手的项目中,我们补充说:
if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
{
return;
}
Run Code Online (Sandbox Code Playgroud)
到用户的构造函数的开头控制发生这种情况以避免该错误.
如果用户控件在设计时抛出异常,则可以对其进行调试.为此,请在Visual Studio中使用此用户控件打开Dll项目.选择另一个Visual Studio实例作为调试的可执行文件.开始调试.在第二个(已调试的)Visual Studio实例中,在客户端XAML页面中使用您的用户控件.通过这种方式,您可以在设计模式下调试用户控件.
| 归档时间: |
|
| 查看次数: |
50136 次 |
| 最近记录: |