Как создать собственный четырехкнопочный элемент управления с полезными привязками? - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь сделать кликерную игру в 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 или чем-то еще, я буду очень признателен.

Я отредактировал свой вопрос, чтобы он стал более общим / концептуальным.

Кстати, первый кодовый пост, когда-либо здесь, и, пожалуйста, будьте снисходительны, и я был бы признателен за любые предложения по улучшению формата поста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...