2017-08-11 76 views
0

我正在編寫一個Visual Studio擴展,這看起來並不相關,但也許它是。當我調用initializeComponent時,我的代碼在代碼隱藏中拋出異常。我有一個TeamExplorerSection,它創建一個「模型」並將其傳遞給構造函數中的SectionView(xaml)。它作爲視圖的一個屬性存儲。該模型有一些屬性,名稱,Id等,我可以綁定這些屬性的視圖,但它也有一個集合,我試圖綁定到一個ItemsControl坐在一個堆棧面板。這不起作用。如何在Visual Studio擴展中綁定一個Stackpanel?

<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 消息= '添加值類型的集合' System.Windows.Controls .ItemCollection'拋出一個異常。'行號「22」和行位置「19」。 源= PresentationFramework 堆棧跟蹤: 在System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader,IXamlObjectWriterFactory writerFactory,布爾skipJournaledProperties,對象rootObject,XamlObjectWriterSettings設置,烏里基本URI) 在System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader (對象父組件,布爾closeStream) 對象組件對象組件對象組件對象組件對象組件對象組件對象組件對象組件對象組件,Uri resourceLocator) at ReviewPlus.TeamExplorerSectionView.InitializeComponent()in C:\ Dev \ ReviewPlus \ ReviewPlus \ CodePlusTeamExplorerSectionView.xaml:line 1 內部異常1: InvalidOperationException:在ItemsSource正在使用時操作無效。改爲使用ItemsControl.ItemsSource訪問和修改元素。

我似乎在做這個綁定有什麼問題。

回答

0

XAML將DataTemplate作爲項添加,因此爲錯誤。你需要指定它是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> 

的區別在於DataTemplateItemTemplate設定器內。