我在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>
我猜我需要以某种方式将整数转换为某种项目?
答案 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;时,只需从集合中删除一个项目。