在视图上动态显示不同数量(0-10)的BitmapImages

时间:2014-02-05 15:20:29

标签: wpf mvvm

我在设计问题时遇到了一个小问题:

我的卡片工具应在我的视图上显示0-10张图片。

有时候只有三次,有时是六次,有时甚至是十次......

由于MVVM,我不想只将Controls.Add()图像添加到网格/控件内容中。

对此有什么好处?一种方法是有十个位图变量,但还有另一种更好的方法吗?

修改:\

我尝试过这样:

<ItemsControl ItemsSource="{Binding CardImages}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Horizontal"></WrapPanel>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}" Stretch="Uniform" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

但它不能正常工作。

我有六张照片,但剩下的照片都不可见(出于sigth)。我想要显示所有的图片,所以3必须是高度小约50%,其他三个atm不可见的图片应显示在所示的三张图片下。希望这很清楚。

如何解决?我尝试过ScrollViewers,ViewBoxes和一些不同类型的模板/面板,但没有成功。 :(

1 个答案:

答案 0 :(得分:2)

我会将ItemsControl绑定到包含图像源/位置的公共可观察集合属性,但是您在视图模型上引用它们,然后将项目模板化以显示图像。

<ItemsControl Binding="{Binding MyPublicProperty}">
    <ItemsControl.ItemTemplate>
         <Image Source="{Binding Source={StaticResource MyImage}, Path=Source}"/>
    </ItemsControl.ItemTemplate>
</ItemsControl>

请参阅this SO question以了解图像的绑定。