我有一个mvvm应用程序和一个显示按钮的表单。 xaml表单上的每个按钮都需要绑定到相应的列表项。例如。在列表中我们可以有:物品(物品(1,梅赛德斯),物品(3,宝马)等)。当表单打开时,我需要显示列表中存在的那些按钮。列表在表单开始时动态填充。以下是按钮的示例:
<Button Command="{Binding Path=ChooseCommand}" CommandParameter="{x:Static local:Car.Merecdes}" >
<Button.Content>
<StackPanel Orientation="Vertical" Width="165" Height="125">
<Image x:Name="PathIcon1" Width="50" Height="35" Source="/Resources/Images/Mercedes.png" Stretch="Fill"></Image>
<TextBlock Text="Mercedes" HorizontalAlignment="Left" Margin="5,20,0,0" />
</StackPanel>
</Button.Content>
</Button>
我怎样才能做到这一点?
答案 0 :(得分:2)
您需要使用ItemsControl
(例如ListBox
)来显示项目,并使用DataTemplate
来定义每个项目的外观。也许是这样的:
在资源中:
<DataTemplate>
<Button Command="{Binding Path=ChooseCommand}" CommandParameter="{Binding Param}">
<Button.Content>
<StackPanel Orientation="Vertical" Width="165" Height="125">
<Image x:Name="PathIcon1" Width="50" Height="35"
Source="{Binding ButtonImageSource}" Stretch="Fill"></Image>
<TextBlock Text="{Binding ButtonText}" HorizontalAlignment="Left"
Margin="5,20,0,0" />
</StackPanel>
</Button.Content>
</Button>
</DataTemplate>
在XAML中:
<ListBox ItemsSource="{Binding YourItemCollection}" .../>
请注意,为此,您需要在商品类中添加ButtonText
属性和string ButtonImageSource
属性。有关数据绑定的详细信息,请参阅MSDN上的Data Templating Overview页面。