我想要一个带有ItemsSource作为边框集合的ListBox的DataTemplate。在每个边框内部,我想显示另一个包含一些具有自己的ItemsSource的项目的ListBox。 但是,当我尝试实现这种结构时,我无法填充任何数据。
我的XAML代码 -
<Grid x:Name="RightPanel" Grid.Column="2" Background="Beige">
<Border BorderBrush="Black" Margin="4" BorderThickness="1.5">
<ScrollViewer Margin="2" Focusable="False">
<ListBox x:Name="MainRightListBox" ItemsSource="{Binding ListBoxCollection,Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<ListBox x:Name="ChildListBox" ItemsSource="{Binding CurrentPage.ClonedVectorImages,Mode=TwoWay}" SelectedItem="{Binding ImageVectorSelected}" BorderBrush="Transparent" Background="Transparent">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="canvas" Background="Transparent" Orientation="Horizontal" Tag="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}, Mode=FindAncestor}}">
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="Delete" CommandParameter="{Binding}"
Command="{Binding PlacementTarget.Tag.DataContext.DeleteCloneCommand, RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}, Mode=FindAncestor}}"/>
</ContextMenu>
</StackPanel.ContextMenu>
<Viewbox Width="35" Height="35" >
<Canvas Width="35" Height="35">
<Canvas>
<Path Fill="#ffda2526" Data="F1 M 0.000,112.500 C 0.000,50.369 50.368,0.000 112.500,0.000 C 174.632,0.000 225.000,50.369 225.000,112.500 C 225.000,174.633 174.632,225.000 112.500,225.000 C 50.368,225.000 0.000,174.633 0.000,112.500 Z" Height="30.667" Stretch="Fill" Width="31"/>
<TextBlock x:Name="tb1" Text="{Binding CountId}" Foreground="WhiteSmoke" FontSize="20" FontFamily="Arial Bold" Height="20" RenderTransformOrigin="1.588,1.224" Canvas.Left="9.322" Canvas.Top="3.335"></TextBlock>
</Canvas>
</Canvas>
</Viewbox>
<TextBox Text="Enter Text Here" Height="20" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
</Border>
</Grid>
答案 0 :(得分:0)
“可以将DataTemplate放在另一个不同模板结构的DataTemplate中吗?”
答案是肯定的,它可以。你的XAML结构很好。
但是可能错误的是使用的绑定路径/表达式。您需要注意DataContext
内ListBox
DataTemplate
内的ListBoxCollection
是CurrentPage.ClonedVectorImages
中对应的项。因此,如果之前提到的项具有属性ListBox
,则这种绑定方式应该可以正常填充内部<ListBox x:Name="ChildListBox"
ItemsSource="{Binding CurrentPage.ClonedVectorImages,Mode=TwoWay}"
........>
:
{{1}}
答案 1 :(得分:0)
您需要将DataTemplates
放入具有相应密钥的资源中,否则可能会发生异常:
Markup.IStyle.Connector.Connect错误
这是studio的错误,其描述如下link
:
查看此问题的好方法“模板就像括号,引用括号”模板XAML未创建,但保存并稍后运行。因此,错误是:我们遇到嵌套括号的问题。
在任何情况下,我认为应该避免嵌套模板并通过资源使用它,这将更容易和更清晰。