我创建了一个UserControl,然后在其他地方使用该控件,但它总是抛出异常。
输出:
A first chance exception of type 'System.ArgumentException' occurred in WindowsBase.dll
A first chance exception of type 'System.TypeInitializationException' occurred in WindowsBase.dll
调用堆栈:
PresentationFramework.dll!System.Windows.Markup.XamlReader.RewrapException(System.Exception e, System.Xaml.IXamlLineInfo lineInfo, System.Uri baseUri) + 0x10 bytes
是最热门的电话。
这是一个基本的UserControl,里面有一个ListBox,它有3个DP,2 * DataTemplate和一个用于ListBox的ItemsSource的IList。
我使用UserControl的地方就像这样。
<CustomUC:MyUserControl ItemsSource="{Binding SomeList}" >
<CustomUC:MyUserControl.HeadTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</DataTemplate>
</CustomUC:MyUserControl.HeadTemplate>
</CustomUC:MyUserControl>
在尝试时我甚至没有使用其中一个模板,并试图将其评论出来,但仍然没有运气。
即使我发布了所有可能抛出异常的代码,它仍然无法加载。
<UserControl x:Class="Myproject.CustomUC.MyUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<ListBox ItemsSource="{Binding Path=Collection}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<ContentPresenter Name="Head"
Visibility="Visible"
ContentTemplate="{Binding Path=HeadTemplate}"/>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</Grid>
修改
添加了信息。可视设计器给了我这个错误:
Default value type does not match type of property 'HeadTemplate'.
答案 0 :(得分:2)
我认为可能是
<UserControl x:Class="Myproject.CustomUC:MyUserControl" ...
这导致了问题。您在CustomUC和MyUserControl之间有:,它应该是。
有关详细信息,请查看x:Class
的MSDN页面