Использование StackPanel как ContentControl (WPF)

Строка Shebang является необязательной, и если вы запускаете интерпретатор ruby ​​и передаете ему сценарий в качестве аргумента командной строки, то флаги, которые вы устанавливаете в командной строке, являются флагами, с которыми работает ruby.

Линия Шебанга вовсе не является рубином (если вы не хотите называть это комментарием рубина). Это действительно сценарий оболочки. Большинство пользователей Linux и Unix используют оболочку BASH (расшифровывается как Borne Again SHell), но почти в каждой ОС есть интерпретатор команд, который будет соблюдать Shebang.

«#! / Usr / local / bin / ruby ​​-w»

Часть «she» - это октоторп (#), знак «решетка», знак числа, знак хеша и теперь хэш-тег ( Я до сих пор называю это крестики-нолики просто потому что).

Часть «взрыв» - это восклицательный знак (!), И это все равно, что бить кулаком по столу, чтобы воскликнуть команду.

В Windows «оболочка» - это командная строка, но даже без черного окна DOS интерпретатор команд будет запускать сценарий на основе сопоставления файлов. На самом деле не имеет значения, читает ли интерпретатор команд или язык программирования шебанг и следит за соблюдением флагов, важно то, что они соблюдаются.

"-w" - это флаг. По сути, это инструкция для ruby, которой нужно следовать при запуске скрипта. В этом случае «-w» включает предупреждения, поэтому вы получите дополнительные предупреждения (скрипт продолжает работать) или ошибки (скрипт останавливается) во время выполнения скрипта. Предупреждения и исключения могут быть обнаружены и применены во время программы. Это помогает программистам находить проблемы, которые приводят к неожиданному поведению.

Я фанат быстрых и грязных сценариев, чтобы выполнить работу, так что нет -у. Я также фанат высококачественного многоразового кодирования, так что обязательно используйте -w. Правильный инструмент для правильной работы. Если вы учитесь, всегда используйте -w. Когда вы узнаете, что делаете, и перестанете использовать -w для быстрых задач, вы начнете понимать, когда это помогло бы использовать -w вместо того, чтобы тратить часы на устранение неполадок. (Подсказка: когда причина проблемы не совсем очевидна, просто добавьте -w и запустите ее, чтобы увидеть, что у вас получится).

«- w» требует некоторого дополнительного кодирования, чтобы прояснить для ruby, что вы имеете в виду, поэтому это не решает сразу, но если вы уже напишите код с -w, у вас не будет много проблема с добавлением необходимых битов для запуска небольшого скрипта с предупреждениями. Фактически, если вы привыкли использовать -w, вы, вероятно, уже пишете код таким образом, и -w ничего не изменит, если вы что-то забудете. Ruby требует гораздо меньшего количества «программного кода», чем большинство (возможно, все) скомпилированных языков, таких как C ++, поэтому выбор не использовать -w не позволяет вам сэкономить много времени на наборе текста, он просто позволяет меньше думать перед тем, как пытаться запустить скрипт (IMHO) ).

-v - это подробный режим, и он НЕ меняет работу скрипта (никаких предупреждений не возникает, нет остановки скрипта в новых местах). Несколько сайтов и обсуждений вызывают -w подробный режим, но -w является режимом предупреждения, и это меняет выполнение скрипта.

5
задан Community 8 February 2017 в 14:12
поделиться

2 ответа

Я бы сказал, что ItemsControl - это то, что отображает кнопки по вертикали. если вы хотите, чтобы кнопки в ItemsControl были горизонтальными, тогда вам нужно, чтобы StackPanel находился в ItemsControl ItemsPanelTemplate , а не наоборот как то, что у вас есть в вашем коде:

<ItemsControl IsTabStop="False" ItemsSource="{Binding Path=BranchCommands}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Tag="{Binding}" Padding="3">
                <TextBlock Text="{Binding Path=DisplayValue}" />
            </Button>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

Я могу немного ошибаться с битом ItemsControl.ItemsPanel , так как у меня нет данных для его проверки ...

Изменить: Помимо ссылки на Bea, есть еще несколько хороших материалов от Dr WPF .

9
ответ дан 13 December 2019 в 05:41
поделиться

Я не могу видеть ваше изображение (оно заблокировано брандмауэром моей компании), но я все равно иду ...

Ваше 'Orientation = "Horizontal"', вероятно, работает как надо должен: он содержит только один дочерний элемент, ItemsControl. Вместо этого попробуйте создать ControlTemplate для своего ItemsControl, где ControlTemplate содержит StackPanel с Orientation = "Horizontal".

Надеюсь, это поможет!

Изменить:

И снова Би дает ответ / пример!

http://bea.stollnitz.com/blog/?p=10

3
ответ дан 13 December 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: