Установите границу вокруг StackPanel.

Текущие ответы хороши, но не говорите о том, как они представляют собой синтаксический сахар для некоторого шаблона, к которому мы так привыкли.

Давайте начнем с примера, скажем, у нас есть 10 чисел, и мы хотим подмножество тех, которые больше, чем, скажем, 5.

>>> numbers = [12, 34, 1, 4, 4, 67, 37, 9, 0, 81]

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

Подход 1

result = []
for index in range(len(numbers)):
    if numbers[index] > 5:
        result.append(numbers[index])
print result  #Prints [12, 34, 67, 37, 9, 81]

Подход 2 (Слегка чистые, для включения)

result = []
for number in numbers:
    if number > 5:
        result.append(number)
print result  #Prints [12, 34, 67, 37, 9, 81]

Подход 3 (ввод списка)

result = [number for number in numbers if number > 5]

или в более общем смысле:

[function(number) for number in numbers if condition(number)]

где:

  • function(x) принимает x и преобразует его во что-то полезное (например, x*x)
  • , если condition(x) возвращает любое значение False-y (False, None, empty string, empty list , и т. д.), то текущая итерация будет пропущена (подумайте continue). Если функция возвращает значение, отличное от False-y, то текущее значение переходит к окончательному результирующему массиву (и проходит этап преобразования выше).

Чтобы понять синтаксис в слегка по-разному посмотрите в разделе «Бонус» ниже.

Для получения дополнительной информации следуйте руководству, которое все другие ответы связали: List Consrehension


Бонус

(Немного непитонический, но поставив его здесь для полноты)

Пример выше может быть записан как:

result = filter(lambda x: x > 5, numbers)

Общее выражение выше, может быть записано как:

result = map(function, filter(condition, numbers)) #result is a list in Py2

39
задан rae1 15 January 2013 в 16:11
поделиться

3 ответа

Вы устанавливаете DockPanel.Dock = "Top" в StackPanel, но StackPanel не является дочерним элементом DockPanel ... граница . Ваше свойство стыковки игнорируется.

Если вместо этого вы переместите DockPanel.Dock = "Top" в Border, обе проблемы будут исправлены :)

17
ответ дан 26 November 2019 в 23:57
поделиться

May быть этим будет полезный:

<Border BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Height="160" Margin="10,55,0,0" VerticalAlignment="Top" Width="492"/>
0
ответ дан 26 November 2019 в 23:57
поделиться

А что насчет этого:

<DockPanel Margin="8">
    <Border CornerRadius="6" BorderBrush="Gray" Background="LightGray" BorderThickness="2" DockPanel.Dock="Top">
        <StackPanel Orientation="Horizontal">
            <TextBlock FontSize="14" Padding="0 0 8 0" HorizontalAlignment="Center" VerticalAlignment="Center">Search:</TextBlock>
            <TextBox x:Name="txtSearchTerm" HorizontalAlignment="Center" VerticalAlignment="Center" />
            <Image Source="lock.png" Width="32" Height="32" HorizontalAlignment="Center" VerticalAlignment="Center" />            
        </StackPanel>
    </Border>
    <StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom" Height="25" />
</DockPanel>
31
ответ дан 26 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

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