XAML без .xaml.cs кодируют позади файлов

Используйте StringBuilder, и класс Separator

StringBuilder buf = new StringBuilder();
Separator sep = new Separator(", ");
for (String each : list) {
    buf.append(sep).append(each);
}

Разделитель обертывает разделитель. Разделитель возвращается методом Разделителя toString, если на первом вызове, который возвращает пустую строку!

Исходный код для класса Separator

public class Separator {

    private boolean skipFirst;
    private final String value;

    public Separator() {
        this(", ");
    }

    public Separator(String value) {
        this.value = value;
        this.skipFirst = true;
    }

    public void reset() {
        skipFirst = true;
    }

    public String toString() {
        String sep = skipFirst ? "" : value;
        skipFirst = false;
        return sep;
    }

}
26
задан Eric 3 December 2009 в 17:46
поделиться

4 ответа

Если вы следите за статьей Джоша Смита о MVVM , он использует шаблоны данных для представлений, а не пользовательские элементы управления. Если вы поместите свои DataTemplates в ResourceDictionaries, у них вообще не будет кода программной части. Если вы не используете код программной части своего пользовательского элемента управления, разве это не означает, что вы можете использовать подход DataTemplate? Если вы это сделаете, WPF позаботится о привязке вашего представления к вашей модели представления за вас.

14
ответ дан 28 November 2019 в 07:06
поделиться

Пробовали ли вы использовать это из чистого любопытства:

x:Subclass="Control"

По умолчанию для UserControls требуется вызов InitializeComponent (), а для стандартных элементов управления - нет. Мне было бы интересно узнать, работает ли это.

-Дуг

0
ответ дан 28 November 2019 в 07:06
поделиться

В качестве другого варианта, если вы не хотите полностью использовать DataTemplates, вот альтернативный подход для UserControls:

Используйте атрибут x: Code для встраивания конструктора вызовите в XAML:

<x:Code><![CDATA[ public MyClass() { InitializeComponent(); }]]></x:Code>

Эрик

33
ответ дан 28 November 2019 в 07:06
поделиться

Я обсуждал этот вопрос с членом команды Windows Client на PDC, и прямо сейчас мне сказали, что не существует официально поддерживаемого способа полностью удалить код, стоящий за файлом. Как видите, его можно скомпилировать, но InitializeComponent () никогда не вызывается, поэтому элемент управления не настраивается должным образом.

Атрибут x: Subclass «использование в первую очередь предназначено для языков, которые не поддерживают объявления частичных классов». Это не предназначалось для такого поведения (к сожалению).

2
ответ дан 28 November 2019 в 07:06
поделиться
Другие вопросы по тегам:

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