Ответы пользователя Alexander - CodeHelper

Alexander

Alexander
Карма 1361
Имя Ояябу!
Возраст 27
Сайт Неизвестно
Twitter Неизвестно
Участвует в проекте 1111 дн., 7 час., 50 мин.
Последняя активность 501 дн., 15 час. назад
Ух какой!

Ответы

Новые Лучшие
1
2
3
4
5
Перейти к вопросу →

В свое время тоже искал туториал по организации drag&drop'а в WPF и, если не ошибаюсь, сталкивался с той же проблемой, что и у вас. С байндингом у вас вроде все нормально, вы же видите в дереве элементы второго уровня. В итоге я использовал данную статью. Тут рассматривается более гибкое повторно используемое решение. С некоторыми модификациями использую его и сейчас. Взгляните, быть может это вариант понравится вам больше.

Перейти к вопросу →

продолжение:

Однако, на практике только небольшое подмножество UI приложений может быть напрямую связано с данными модели, особенно если модель представляет собой уже существующий класс или данные, над которыми разработчик не имеет контроля. Также модель может включать в себя такие типы данных, которые не могут быть прямо отражены в виде. UI может потребоваться произвести некие сложные операции, которые должны быть реализованы в коде (не в XAML), который, с одной стороны, не может принадлежать виду (т.к. мы его определяем как весьма легковесную сущность), а с другой стороны слишком специфичен для включения в модель (возможно, вовсе нет возможности для его включения в модель, т.к. она представляет собой неизменяемую сущность). В итоге нам нужно место, куда можно было бы поместить некоторые подобные вещи. За эти задачи отвечает ViewModel. Этот термин должен трактоваться как "Модель над абстрактным видом" (Model of a View). Он подразумевает собой абстракцию над видом, однако так же реализует некоторые вещи, слишком специфичные для модели (вид может пользоваться ими для привязки). Другими словами ViewModel может содержать в себе некоторые механизмы преобразования типов модели в типы вида, а так же содержать команды, которые вид может использовать для влияния на модель.

Взято вот отсюда

Перейти к вопросу →

В xaml разметке одинарные и двойные кавычки равнозначны. Таким образом

Title="My cool window"

равнозначно

Title='My cool window'

Соответственно, для того, чтобы использовать двойные кавычки внутри строки, нужно поступить следующим образом

Title='My "cool" window'
Перейти к вопросу →

Попробуйте вот так:

System.Globalization.DateTimeFormatInfo mfi = new System.Globalization.DateTimeFormatInfo();
for(int i = 1; i <= 12; i++)
{
    string strMonthName = mfi.GetMonthName(i).ToString();
    Console.WriteLine(strMonthName);
}
Перейти к вопросу →

После некоторых поисков удалось найти несколько хороших и бесплатных решений:

  1. ObjectListView. alt text ко всему прочему обладает прекрасной справкой и руководством

  2. TreeWithColumns

alt text

Аналогичных бесплатных компонентов, написанных на WPF найти не удалось. Если у кого-нибудь есть ссылки на подобные, поделитесь.

Перейти к вопросу →

Вот тут описывается способ переключения тем.

Тут пишут о готовом компоненте для переключения темы.

А вот тут русский чувак рассказывает, как это делать. Правда тоже на буржуйском.

Вот еще отличная статейка. Тут уже создание темы рассматривается.

Перейти к вопросу →

Большинство социальных сервисов поддерживают быстрый переход на страницу постинга через обычный GET-запрос. То есть по сути нужно просто обратиться к специально сконструированному адресу (URL). В этот адрес встраивается вся дополнительная информация типа заголовка, тегов и т.п. Адрес может быть, например, таким:

http://РЕСУРС.com/share?title=some_title&url=some_url

Следует учитывать:

  • данные, которые помещаются в URL должны кодироваться, т.к. некоторые символы в URL недопустимы. В .NET это можно сделать так: HttpUtility.UrlEncode("ТЕКСТ").
  • может понадобиться записать в URL очень много текста (например, длинное описание статьи/новости). Нужно следить, чтобы кол-во символов в URL не превышало (примерно) 2000. Иначе некоторые сервисы возвращают страницу с ошибкой.

Для фейсбука

добавить ссылку следующего вида:

http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.cnn.com%2F&t=CNN%26s+website

Параметр "u" определяет адрес, который будет вы хотите опубликовать, "t" - заголовок для ссылки по-умолчанию. Так что вышеуказанный пример позволит создать ссылку для расшаривания адреса "http://www.cnn.com/" с дефолтовым заголовком "CNN’s website". Параметр "t" играет роль только в том случае, если Facebook не сможет дотянуться до указанного адреса для получения актуального заголовка.

Для твиттера

работает следующий линк: http://www.twitter.com/home?status=Hello+World.

Для ВКонтакте

http://vkontakte.ru/share.php?url={АДРЕС НОВОСТИ}

Для Google Buzz

http://www.google.com/buzz/post?url={АДРЕС НОВОСТИ}&message={ТЕКСТ НОВОСТИ}
Перейти к вопросу →

Обратите внимания на данный D&D фреймворк. Так же прицепляю архив с примером использования.

Перейти к вопросу →

Простого ответа на вопрос я так и не нашел. Была статья на StackOverflow (не смог повторно ее найти), где приводился такой подход:

1) Создать в class library словарь Themes/generic.xaml. Все ресурсы, описаные в нем расшариваются между компонентами сборки.

2) В этот словаре описать стиль окна/страницы.

3) Т.к. дизайнер VS2008 не "видит" ресурсов из generic.xaml, то нужно обращаться к ним не как к статическим ресурсам, а как к динамическим, т.е. при помощи расширения DynamicResource:

<Window x:Class="..."
    ...
    Style={DynamicResource MyWindowStyle}>
...
</Window>

4) Убедиться, что сборка помечера атрибутом ThemeInfo.

Но данный подход у меня так и не сработал. В итоге поступил по-другому.

1) Создал Themes/generic.xaml

2) Описал в нем стиль окна, пометив ключем с указанием типа окна:

<Style x:Key="{x:Type MyWindow}"...

3) Добавил статический конструктор в окно, в котором указал в качестве ключа дефолтового стиля тип данного окна.

DefaultStyleKeyProperty.OverrideMetadata(
    typeof(MyWindow), 
    new FrameworkPropertyMetadata(typeof(MyWindow)));

Если короче, то просто задал дефолтный вид окна. Это сработало. Не очень красиво, но с другой стороны, мы ведь вряд ли будем наследоваться от окна, определенного в xaml-размтке.

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

Перейти к вопросу →

Для форматирования при помощи html тэгов можно использовать HtmlToXamlConverter.

<TextBlock
    x:Name="BoundHtmlBlock"
    local:HtmlTextBoxProperties.HtmlText="Binding Path=someHtmlText"/>

Полный пример можно увидеть здесь.


1
2
3
4
5
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.