0

我正在编写一个 Visual Studio 扩展,这似乎并不相关,但也许是。调用 initializeComponent 时,我的代码在代码隐藏中引发异常。我有一个 TeamExplorerSection,它创建一个“模型”并将其传递给构造函数中的 SectionView(xaml)。它被存储为视图的属性。该模型具有一些属性,名称、ID 等。我能够将这些属性绑定到视图,但它也有一个集合,我试图将其绑定到位于堆栈面板中的 ItemsControl。这不起作用。

<UserControl x:Class="ReviewPlus.ReviewPlusTeamExplorerSectionView"
         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" 
         xmlns:ReviewPlus.ViewModels="clr-namespace:ReviewPlus.ViewModels"
         mc:Ignorable="d" 
         d:DesignHeight="250" d:DesignWidth="300">
<UserControl.DataContext>
    <ReviewPlus.ViewModels:RelatedReviewsViewModel/>
</UserControl.DataContext>    
<StackPanel>
    <ItemsControl Name="RelatedReviewsICtl" ItemsSource="{Binding RelatedReviews}">
        <DataTemplate>
            <StackPanel  Orientation="Horizontal" HorizontalAlignment="Left">                 
                <TextBlock Text="{Binding Path=Name}" />
                <TextBlock Text="{Binding Path=PreviousId}"/>
                <TextBlock Text="{Binding Path=Id}"/>
            </StackPanel>
        </DataTemplate>
    </ItemsControl>    
</StackPanel>

这是一个例外:

发生 System.Windows.Markup.XamlParseException HResult=0x80131501 Message='向'System.Windows.Controls.ItemCollection'类型的集合添加值引发异常。' 行号“22”和行位置“19”。Source=PresentationFramework StackTrace: 在 System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri) at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties , 对象 rootObject, XamlAccessLevel accessLevel, Uri baseUri) 在 System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream) 在 System.Windows.Application。LoadComponent(Object component, Uri resourceLocator) at ReviewPlus.TeamExplorerSectionView.InitializeComponent() in C:\Dev\ReviewPlus\ReviewPlus\CodePlusTeamExplorerSectionView.xaml:line 1 内部异常 1:InvalidOperationException:使用 ItemsSource 时操作无效。改为使用 ItemsControl.ItemsSource 访问和修改元素。

我似乎对这个绑定做错了什么。

4

1 回答 1

0

XAMLDataTemplate作为项目添加,因此出现错误。您需要指定它是ItemTemplate. 尝试这个。

<ItemsControl Name="RelatedReviewsICtl" ItemsSource="{Binding RelatedReviews}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel  Orientation="Horizontal" HorizontalAlignment="Left">                 
                <TextBlock Text="{Binding Path=Name}" />
                <TextBlock Text="{Binding Path=PreviousId}"/>
                <TextBlock Text="{Binding Path=Id}"/>
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

不同之处在于二传手DataTemplate内部。ItemTemplate

于 2017-08-11T17:09:34.430 回答