我有一个简单的Border
和Grid
,位于WPF的Canvas
容器中。控件的位置在运行时更改,因此它驻留在画布中。
控件的XAML看起来像这样:
<Border Name="PopupArea"
Width="130"
Height="150"
BorderBrush="Black"
BorderThickness="2"
CornerRadius="5">
<Border.Background>
<SolidColorBrush Opacity="0.5" Color="Black" />
</Border.Background>
<Grid>
<StackPanel>
<Border HorizontalAlignment="Center">
<Border.Effect>
<DropShadowEffect />
</Border.Effect>
<TextBlock FontWeight="Bold" Style="{StaticResource SmallWhiteFont}">HELLO WORLD</TextBlock>
</Border>
</StackPanel>
</Grid>
</Border>
但是我现在需要能够在代码中创建运行时根据需要创建上述控件的Collection
。
我的问题是:
一个。编写我的XAML以通过代码创建上述控件的多个实例的最佳方法是什么?我只是在资源中声明ContentControl吗?
B中。假设我是正确的,并且需要资源模板。我如何实际使用它在代码中创建控件的多个实例?
答案 0 :(得分:0)
在XAML中我会使用ItemTemplate。 然后我将ItemsSource绑定到我的viewmodel上的一些可观察集合。
以下是MSDN:
的示例<ListBox Width="400" Margin="10"
ItemsSource="{Binding Source={StaticResource myTodoList}}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=TaskName}" />
<TextBlock Text="{Binding Path=Description}"/>
<TextBlock Text="{Binding Path=Priority}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
注:
在资源部分定义DataTemplate更常见,因此它可以是可重用的对象。
<ListBox Width="400" Margin="10"
ItemsSource="{Binding Source={StaticResource myTodoList}}"
ItemTemplate="{StaticResource myTaskTemplate}"/>