我正在尝试基于CivClicker在WPF中制作答题器游戏,目前基本上只是一个克隆游戏,但是...我希望将来进一步扩展该概念。
主要是练习和探索更复杂的MVVM和xaml问题解决方案。如您在链接中所见,有很多重复的按钮,我想以某种方式简化它。
我当前的解决方案是垃圾处理,但它有些起作用。它以每个唯一按钮一个命令的形式启动,不是很干净。然后,使用CommandParameter,我将每个建筑物对象的命令缩减为一个,并让CommandParameter提取我想要购买的建筑物数量,从而更加简洁。在当前的迭代中,对于与建筑物相关的所有购买按钮,我只有一个命令。我正在使用Multibinding绑定静态建筑类型和要购买的建筑数量。
我当前的4按钮购买机制如下所示。
<StackPanel Orientation="Horizontal">
<Button Command="{Binding BuyTentCommand}" Content="Build Tent" Width="120" ToolTip="2 skins, 2 wood: +1 max pop.">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource MConverter}">
<Binding Source="1"/> //Amount of buildings
<Binding Source="0"/> //Building ID
</MultiBinding>
</Button.CommandParameter>
</Button>
<Button Command="{Binding BuyTentCommand}" Content=" x10 " Margin="2,0">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource MConverter}">
<Binding Source="10"/>
<Binding Source="0"/>
</MultiBinding>
</Button.CommandParameter>
</Button>
<Button Command="{Binding BuyTentCommand}" Content=" x100 " Margin="2,0">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource MConverter}">
<Binding Source="100"/>
<Binding Source="0"/>
</MultiBinding>
</Button.CommandParameter>
</Button>
<Button Command="{Binding BuyTentCommand}" Content=" x1000 " Margin="2,0">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource MConverter}">
<Binding Source="1000"/>
<Binding Source="0"/>
</MultiBinding>
</Button.CommandParameter>
</Button>
</StackPanel>
在任何情况下,重复执行这段代码16次(或更多)都不是理想的选择。如果有人可以向我展示如何将这样的东西制作成单个可重用的UserContol之类的有效示例,我将不胜感激。
我对问题进行了编辑,使其更具通用性/概念性。
顺便说一句,这里是有史以来的第一个代码发布,请宽大,我将感谢您对发布格式进行改进的所有建议。