Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Хотя с другой стороны, что такое ~200k для компании, разрабатывающей проприетарное ПО?
Как сказал мой опытный коллега, если ты пользуешься Microsoft, то лучше использовать ВСЁ от Microsoft.
<Style x:Key="MyStyle" TargetType="ItemsControl">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemContainerTemplate>
<StackPanel/>
</ItemContainerTemplate>
</Setter.Value>
</Setter>
</Style>?Style { Key: "MyStyle", [
ItemsPanel: {
{ StackPanel }
}
]}было бы всё-таки чуть лучше? :){
"Style": {
"-Key": "MyStyle",
"-TargetType": "ItemsControl",
"Setter": {
"-Property": "ItemsPanel",
"Setter.Value": {
"ItemContainerTemplate": {
}
}
}
}
}
// неявно без свойств
ItemsPanel: {
{ StackPanel }
}
// явно без свойств
ItemsPanel: MyItemsPanel {
{ StackPanel }
}
// неявно со свойствами
ItemsPanel: {
Foo: "Bar",
{ StackPanel }
}
// явно со свойствами
ItemsPanel: MyItemsPanel {
Foo: "Bar",
{ StackPanel }
}// неявно без свойств
ItemsPanel: {
Content: { StackPanel }
}
// явно без свойств
ItemsPanel: {
$type: "MyItemsPanel",
Content: { StackPanel }
}
// неявно со свойствами
ItemsPanel: {
Foo: "Bar",
Content: { StackPanel }
}
// явно со свойствами
ItemsPanel: {
$type: "MyItemsPanel",
Foo: "Bar",
Content: { StackPanel }
}Do not use Hungarian notation
Do not use a prefix for member variables (_, m_, s_, etc.). If you want to distinguish between local and member variables you should use “this.” in C# and “Me.” in VB.NET.
"_". Так что рекомендации рекомендациями, но даже в МС понимают, что "_" удобнее, чем "this.". И вообще там куча рекомендаций, на которые МС активно кладёт. Не вижу никакого смысла религиозно следовать документу, который оторван от реальности. (Да, там почти всё — дельные советы, но есть и исключения.)Если метод изменяет какие-то приватные члены, то это должно быть видно сразу
Во-вторых, сразу видно такие обращения за счет цветового выделения.
Все выше написанное не про венгерскую нотацию. Тут, конечно, либо одно, либо другое.
На Perl'е-то, вишь, можно куда более лаконично писать, чем на Яве, однако какой код проще поддерживать?
Я считаю правильным, когда простые вещи делаются просто, а сложные — пропорционально сложно.
UpdateProperty(() => Property,ref property, value)if(value != property)
{
property=value;
RaisePropertyChanged("Property");
}реализацию интерфейса INotifyPropertyChanged используют для ViewModel’и в UI-паттерне MVVM (из мира WPF/Silverlight) именно из соображений производительности (вместо использования DependencyProperty и наследования от DependencyObject)
BoolToVisibilityConverter и IsNotNullConverter
public static bool IsEmpty(this FlowDocument fd)
{
if (null == fd) return true;
TextPointer contentStart = fd.ContentStart.GetNextInsertionPosition(LogicalDirection.Forward);
if (null == contentStart) return true;
TextPointer contentEnd = fd.ContentEnd.GetNextInsertionPosition(LogicalDirection.Backward);
if (null == contentEnd) return true;
return new TextRange(contentStart, contentEnd).IsEmpty;
}
Всего-лишь выясняет, есть что нибудь в документе или нет. public static bool GetRelativeMousePosition(this Visual relativeTo, out Point result)
{
Win32Point w32Mouse = new Win32Point();
GetCursorPos(ref w32Mouse);
bool success = false;
try
{
result = relativeTo.PointFromScreen(new Point(w32Mouse.X, w32Mouse.Y));
success = true;
}
catch (InvalidOperationException)
{
// Если элемент не подключен к корню PresentationSource,
// это обозначает, что мы не в состоянии получить координаты мыши.
result = new Point(double.NaN, double.NaN);
}
return success;
}
Пришлось нагородить по тому что… сюрприз! InputEventArgs.GetPosition не работает, если происходит операция Drag&Drop, и PointFromScreen работает не во всех сценариях (иногда Vusual еще не подключен к PresentationSource на момент вызова метода).Binding2 (sic!) который не ест в тихую исключения
Кончено всеми любимый ThemeManager, что бы можно было форсировать визуальную тему приложения, это наверное вообще самый популярный велосипед.
Этот факт превращает реализацию такой тривиальной операции как прокрутить дерево, что бы был виден указанный узел в самый настоящий ад!
Кончено всеми любимый ThemeManager, что бы можно было форсировать визуальную тему приложения, это наверное вообще самый популярный велосипед.
кросс-бихейворизмлично меня очень раздражает (за редким исключением). Обычно за ним я вижу желание компании сэкономить на разработке, наплевав на интересы пользователей. Исключения — весьма нишевые продукты, которые целевой аудиторией используются как основной или даже единственный инстрцмент в работе по сценарию «утром запустили — вечером закрыли, окна приложения фокус за день не теряли», А ОС им нужна лишь, грубо говоря, для запуска. чуть ли не автозагрузке. И даже в таких продуктах неплохо бы иметь возможность менять интерфейс на «родной» для данной (или любимой) ОС малой кровью. Потому что кроме ЦА есть те, кто использует его эпизодически.
тенденцию к использованию html5 в разработке приложений под вин8
Можно репостить "15 лет WPF: что изменилось". Текст можно оставить без изменений :) Только VS2012 -> VS2021 переправить
Мне еще не хватает возможности наследования. Например, делаешь форму на XAML, с парой кнопок внизу. А потом наследуешь десять раз, каждый раз добавляя несколько контролов - для редактирования разных объектов. Но нет, надо либо каждый раз прописывать эти кнопки, либо как-то извращаться, описывая, что вот тут одна и та же форма, а мы каждый раз вставляем в нее разные вещи...
Семь лет WPF: что изменилось?