Я пытаюсь сделать кликерную игру в WPF, основанную на CivClicker Сейчас это всего лишь клон, но ... я надеюсь расширить концепцию в будущем.
В основном это практика и изучение более сложных решений 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 или чем-то еще, я буду очень признателен.
Я отредактировал свой вопрос, чтобы он стал более общим / концептуальным.
Кстати, первый кодовый пост, когда-либо здесь, и, пожалуйста, будьте снисходительны, и я был бы признателен за любые предложения по улучшению формата поста.