XAML ItemsControl重复X次?

时间:2015-07-05 20:01:03

标签: xaml windows-phone-8.1

我在Windows Phone 8.1应用程序(非SL)中工作,并在我的ViewModel上有一个名为Apples的属性,其值为3

我想要一个转发器来绘制x苹果(我有图像),其中x是我的ViewModel上Apples的值。

如何在XAML中实现这一目标?我现在有以下内容:

<ItemsControl Grid.Column="0" ItemsSource="{Binding Lives, Converter={}}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <!-- image here -->
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

我猜我需要以某种方式将整数转换为某种项目?

3 个答案:

答案 0 :(得分:1)

ItemsSource="{Binding SomeNumber, Converter={StaticResource NumberToItemsConverter}}"

public class NumberToItemsConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var number = (int)value;
        return Enumerable.Range(1, number);
    }
 }

答案 1 :(得分:0)

您有两种选择:

选项一

您需要创建一个苹果列表,并将ItemsControl绑定到它。 这是一个例子:

int x = 3;
Apples = new ObservableCollection<Apple>(); 
/*your ViewModel must implement INotifyPropertyChanged so the UI will be
notified by the changes in the Apples list*/

for(int i = 0; i < x; i++)
{
   Apples.Add(new Apple());
}
//now your ItemsControl has 3 apples

选项二 您可以在后面的代码中创建一个自定义控件来执行上面所写的操作。在该控件中,您将创建一个int类型的依赖项属性,并且当该属性更改时,您可以向ItemsControl添加项目。

答案 2 :(得分:0)

如果您使用带有5个项目的GridView(每个项目都设计为苹果)进行尝试,该怎么办? GridView的源代码由ObservableCollection支持。当生命消耗了#34;时,只需从集合中删除一个项目。