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

Alexander

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

Ответы

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

В одном проекте вы вряд ли совместите несколько .Net языков. Создайте решение (solution) из нескольких проектов (project). Один основной, который будет ссылаться (references) на остальные. В таком случае вы сможете в каждом отдельном проекте использовать тот .Net язык, который вам больше по душе.

Если же вы о том, чтобы в одном проекте ссылаться на сборки (assemblies), написанные на разных .Net языках, то в этом вовсе никакой проблемы нет. Ссылайтесь и используйте.

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

Большинство социальных сервисов поддерживают быстрый переход на страницу постинга через обычный 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 фреймворк. Так же прицепляю архив с примером использования.

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

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

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

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

Перейти к вопросу →
function IsBracketsHavePair(text: string): boolean;
var
   counter, i: integer;
begin
   result := false;
   counter := 0;
   for i := 1 to Lenght(text) - 1 do
   begin
      if text[i] = '(' then
         counter := counter + 1;
      if text[i] = ')' then
         counter := counter - 1;
      if counter < 0 then break;
   end
   if counter = 0 then result := true;
end

Как-то так. Писал по памяти :)

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

Я тоже не спец, но если вопрос в том, откуда брать строку соединения, т.е. параметры "(local)\SQLEXPRESS", "TestDB", "sa", "*", то вместо того, чтобы хардкодить их, можно брать их из конфигурационного файла приложения app.config или web.config. Могу так же предположить, что вместо ConnectionSctring() можно использовать какой-нить другой метод, принимающий путь к udl файлу.

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

Решение нашлось. Нужно создать следующий макрос:

Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module Custom

Sub StartNewInstanceOfStartupProject()
    Dim Prop As EnvDTE.Property
    Prop = DTE.Solution.Properties.Item("StartupProject")
    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
    Dim NameProp As EnvDTE.Property
    NameProp = DTE.Solution.Properties.Item("Name")
    DTE.ActiveWindow.Object.GetItem(NameProp.Value + "\" + Prop.Value.ToString).Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance")
End Sub

End Module

И повесить вызов MyModule.Custom.StartNewInstanceOfStartupProject() на какую-нибудь горячую клавишу.

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

Простого ответа на вопрос я так и не нашел. Была статья на 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.

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

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

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

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

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