Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Так же:
<StackPanel VerticalAlignment="Bottom">
...
</StackPanel>
и для заполнения кнопками вверх вы должны вставлять кнопки в позиции 0 вместо их добавления.
Любить преобразование решения Nir. Мне было интересно, можно ли это сделать с помощью преобразований.
Однако одно предостережение: не используйте трюк трансформации в элементе управления ScrollView, например ListBox, потому что операция полосы прокрутки будет инвертирована из содержимого , Весело наблюдать, если вы не являетесь конечным пользователем. ;>
Другой альтернативой является использование DockPanel вместо этого.
Просто установите для LastChildFill значение false на DockPanel.
Затем установите свойство прикрепленной док-станции на каждую кнопку, которую вы добавляете в нижнюю часть перед добавлением в DockPanel.
пример:
var button = new Button();
DockPanel.SetDock(button, Dock.Bottom);
Лучший способ решить проблему - реализовать пользовательский контейнер, полученный из stackpanel, но быстрое и грязное решение, если элементы добавлены во время выполнения
public Window1()
{
InitializeComponent();
for (int i = 0; i < 10; i++)
{
Button btn = new Button();
btn.Content = "Button " + i;
MyStack.Children.Insert(0, btn);
}
}
Просто вставьте элемент в 0 позицию вместо добавления .
Попробуйте поместить StackPanel в другой контейнер (не StackPanel, возможно DockPanel) и выровнять его по нижнему краю. Затем, когда вы заполняете кнопки, поместите каждый новый в первую позицию.
Я обнаружил, что использование UniformGrid с Column = 1 дает аккуратный стек заполнения или набор Rows = 1 дает аккуратный горизонтально заполненный стек. И добавление из индекса 0 будет работать снизу вверх.
HorizontalAlignment="Right"
. – ChriPf 18 August 2014 в 13:34