Alexander
- Вопросы
- Ответы
Имя | Ояябу! |
Возраст | 27 |
Сайт | Неизвестно |
Неизвестно | |
Участвует в проекте | 1111 дн., 23 час., 39 мин. |
Последняя активность | 502 дн., 6 час., 48 мин. назад |
Ответы
Перейти к вопросу →
В одном проекте вы вряд ли совместите несколько .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);
}