Alexander
- Вопросы
- Ответы
Имя | Ояябу! |
Возраст | 27 |
Сайт | Неизвестно |
Неизвестно | |
Участвует в проекте | 1111 дн., 7 час., 50 мин. |
Последняя активность | 501 дн., 15 час. назад |
Ответы
Перейти к вопросу →
В свое время тоже искал туториал по организации 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);
}
Перейти к вопросу →
После некоторых поисков удалось найти несколько хороших и бесплатных решений:
ObjectListView. ко всему прочему обладает прекрасной справкой и руководством
Аналогичных бесплатных компонентов, написанных на 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"/>
Полный пример можно увидеть здесь.