WPF - 绑定到整数/双重属性以显示X的矩形量
我正在尝试设计一个已知在RPG游戏中可见的“统计”窗口,例如,显示分配给多少个点攻击,防御和生活。WPF - 绑定到整数/双重属性以显示X的矩形量
例如,我有房产生活在我的课,在我的XAML我有一个WrapPanel
,我想举办该会代表每个点的属性生活了,如果所有这些Rectangles
财产有价值“5”,然后5 Rectangles
将出现在该WrapPanel
内。
是否有可能纯粹在XAML中使用DataBinding而不诉诸编写代码? 如果纯粹做到这一点是不可能的,是否可以通过编写一个转换器来实现?
如果其中之一是可能的,怎么样?
我试图使它大部分与绑定无需在后端编写代码,以尽量减少代码臃肿和简单。
编辑:为了澄清,5不是最大值,它可以高达数据类型可以去,所以你必须考虑那些矩形必须动态插入与绑定,而不是只是插入它们并更改可见性。
第一写产生的项目阵列从给定数量的转换器:
public class NumberToItemsConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
return Enumerable.Range(1, System.Convert.ToInt32(value));
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
throw new NotImplementedException();
}
}
然后使用项控制:
<ItemsControl ItemsSource="{Binding Value, Converter={StaticResource numToItems}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Height="100"
Width="20"
Margin="5,0,5,0"
Fill="Red" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
'IsItemsHost'对我来说是新手,MSDN上的文档并没有真正解释它为什么需要,你能详细说明一下吗? –
[这为我填补了空白](https://stackoverflow.com/questions/2859656/what-exactly-does-panel-isitemshost-do)。感谢您向我展示新的东西。 –
@BradleyUffner在这种情况下,它是不需要的(虽然也没有害处),我只是用它,因为我曾经这样做。当你将面板放置在控制模板本身时(如你已经发现的),这是必要的。 – Evk
为什么downvote?为什么不给予反馈,以便我能够改善内容不满意的问题? –
添加5个矩形,将它们的可见性绑定到stat值,并在绑定中使用'ValueConverter'使其可见,如果该值大于或等于该框的值。 –
如果这些统计数据超过5,你会意识到这是行不通的,对吧?这就是为什么它在一个WrapPanel开始,自动定位水平和垂直取决于有多少... –