WP7 - Значение привязки данных в пользовательском элементе управления, как установить строку по умолчанию, чтобы она отображалась в конструкторе - PullRequest
0 голосов
/ 07 июля 2011

Я довольно новичок в WP7 и совершенно не знаком с Expression Blend.

У меня есть ListBox, привязанный к списку пользовательских объектов,

List<Person>

Каждый элемент в списке содержитпользовательский элемент управления MyControl, привязанный к Person.

MyControl содержит TextBox, который связан со свойством Username пользователя Person.

Все это прекрасно работает.Мой вопрос: как установить значение по умолчанию для TextBlock, чтобы оно стало видимым в Designer или ExpressionBlend?Поскольку он привязан к данным, у него нет текста, пока он не запустится ... поэтому я не могу на самом деле делать какие-либо причудливые стили с использованием этих замечательных инструментов, если я не удаляю повторно код привязки, чтобы заменить его строкой, внести изменения, заменитьобязательный код, повторите.Кажется, многословно!

Спасибо,

Стивен

Ответы [ 3 ]

1 голос
/ 07 июля 2011

@ Стивен Вы смотрели на создание образцов данных в Blend, чтобы сделать то, что вам нужно, а затем на некоторую привязку к фактическому присоединению данных к элементу управления, привязанному к вашему списку? Возможно, вы захотите проверить Blend Sample Data , поскольку он проведет вас по простому примеру, как это сделать. Тогда вы сможете адаптироваться к своим собственным целям.

1 голос
/ 07 июля 2011

То, что вы хотите, это «Данные времени проектирования».

Есть несколько способов сделать это.К счастью, есть также много ресурсов онлайн , которые объясняют это.

0 голосов
/ 16 марта 2012

Зависит от того, используете ли вы какую-либо модель MVVM или нет.

Мое предложение, если вы не используете MVVM, это использовать данные выборки Blend, это быстро и быстро.

Если вы MVVM Light, я нашел очень полезным создать два файла: DataService.cs - содержит реальное соединение и данные. DesignDataService.cs - содержит пример данных

Две библиотеки идентичны с точки зрения вызоватак что в ViewModelLocator вы можете поменять их местами:

        if (ViewModelBase.IsInDesignModeStatic)
        {
            SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
        }
        else
        {
            //SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
            SimpleIoc.Default.Register<IDataService, DataService>();
        }

В классе Design я решил создать файл XML для каждой модели, чтобы было легко изменить данные примера и протестировать все возможные сценарии.

Затем я использую функцию Deserialize, чтобы прочитать ее:

                csNodeList _Copyrights = new csNodeList();
                resource = System.Windows.Application.GetResourceStream(new Uri(@"Design/sampledata.xml", UriKind.Relative));
                streamReader = new StreamReader(resource.Stream);
                serializer = new XmlSerializer(typeof(csNodeList));
                _Copyrights = (csNodeList)serializer.Deserialize(streamReader);

Обратите внимание, что файл sampledata.xml должен храниться в папке Design и должен определяться как Content, а не как Resource.Предлагается улучшить производительность и время загрузки.

M

...