WPF: пользовательский UserControl, выбрасывающий исключение - PullRequest
0 голосов
/ 01 июня 2011

Я создал 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 и IList для ItemsSource ListBox.

Когда я использую 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>

EDIT

Добавлена ​​информация. Визуальный конструктор выдает мне эту ошибку:

Default value type does not match type of property 'HeadTemplate'.

1 Ответ

2 голосов
/ 01 июня 2011

Я думаю, что это может быть

<UserControl x:Class="Myproject.CustomUC:MyUserControl" ...

Это вызывает проблему. У вас есть : между CustomUC и MyUserControl, это должно быть .

Для получения более подробной информации посмотрите страницу MSDN для x: Класс

...