Как я связываю StackPanel со своим ViewModel?

Вы получаете массив размера 1, содержащий исходное значение:

Input       Output
-----       ------
thirty-two  {"thirty", "two"}
five        {"five"}

Вы можете увидеть это в действии в следующей программе:

class Test {
    static void checkResult (String input) {
        String [] arr = input.split ("\\-");
        System.out.println ("Input   : '" + input + "'");
        System.out.println ("    Size: " + arr.length);
        for (int i = 0; i < arr.length; i++)
            System.out.println ("    Val : '" + arr[i] + "'");
        System.out.println();
    }

    public static void main(String[] args) {
        checkResult ("thirty-two");
        checkResult ("five");
    }
}

, которая выводит:

Input   : 'thirty-two'
    Size: 2
    Val : 'thirty'
    Val : 'two'

Input   : 'five'
    Size: 1
    Val : 'five'
5
задан Edward Tanguay 8 June 2009 в 10:05
поделиться

2 ответа

Во-первых, не делайте этого. Вместо того, чтобы диктовать UI из вашей виртуальной машины, вы должны диктовать данные (модель). Другими словами, тип свойства должен быть ObservableCollection . Тогда ваше представление будет связываться следующим образом:

<ItemsControl ItemsSource="{Binding FormFields}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

Обычно это определяется в разделе .Resources родительского элемента. То есть Window.Resources или WrapPanel.Resources .

Сказав это, вы можете использовать ContentPresenter для получения StackPanel и вставьте его в визуальное дерево:

<ContentPresenter Content="{Binding FormFields}"/>
18
ответ дан 18 December 2019 в 09:09
поделиться

Вы пробовали использовать Border или просто обычную сетку ?

<Border Content="{Binding FormFields}" />

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

Ура.

0
ответ дан 18 December 2019 в 09:09
поделиться
Другие вопросы по тегам:

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