Найдено результатов: 22

Скрытие унаследованных элементов

Я ищу какой-то способ эффективно скрыть унаследованные члены. У меня есть библиотека классов, которые наследуются от общих базовых классов. Некоторые из более поздних классов-потомков наследуют свойства зависимостей, которые стали рудиментарными и могут быть немного запутанными при использовании IntelliSense или классов в визуальном конструкторе.

Все эти классы являются элементами управления, которые записываются для компиляции либо для WPF, либо для Silverlight 2.0. Я знаю о ICustomTypeDescriptor и ICustomPropertyProvider, но я почти уверен, что они не могут быть использованы в Silverlight.

Это не столько функциональная проблема, сколько проблема удобства использования. Что же мне делать?

Обновление

Некоторые свойства, которые я действительно хотел бы скрыть, происходят от предков, которые не являются моими собственными, и из-за специфического инструмента, для которого я разрабатываю, я не могу сделать скрытие членов с помощью оператора new . (Я знаю, это смешно)

c#   wpf   silverlight   polymorphism   dependency-properties    

486   8   16:03, 1st July, 2020


Числовой ввод данных в WPF

Как вы обрабатываете ввод числовых значений в WPF приложениях?

Без элемента управления NumericUpDown я использую TextBox и обрабатываю его событие PreviewKeyDown с помощью кода ниже, но это довольно уродливо.

Кто-нибудь нашел более изящный способ получить числовые данные от пользователя, не полагаясь на сторонний элемент управления?

private void NumericEditPreviewKeyDown(object sender, KeyEventArgs e)
{
    bool isNumPadNumeric = (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) || e.Key == Key.Decimal;
    bool isNumeric = (e.Key >= Key.D0 && e.Key <= Key.D9) || e.Key == Key.OemPeriod;

    if ((isNumeric || isNumPadNumeric) && Keyboard.Modifiers != ModifierKeys.None)
    {
        e.Handled = true;
        return;
    }

    bool isControl = ((Keyboard.Modifiers != ModifierKeys.None && Keyboard.Modifiers != ModifierKeys.Shift)
        || e.Key == Key.Back || e.Key == Key.Delete || e.Key == Key.Insert
        || e.Key == Key.Down || e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Up
        || e.Key == Key.Tab
        || e.Key == Key.PageDown || e.Key == Key.PageUp
        || e.Key == Key.Enter || e.Key == Key.Return || e.Key == Key.Escape
        || e.Key == Key.Home || e.Key == Key.End);

    e.Handled = !isControl && !isNumeric && !isNumPadNumeric;
}

c#   wpf    

491   17   16:03, 1st July, 2020


Сортировка составной коллекции

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

Существует две или более коллекций объектов различных типов. Вы хотите объединить их в единую сортируемую и фильтруемую коллекцию (без необходимости вручную выполнять сортировку или фильтр).

Один из рассмотренных мною подходов заключается в создании новой коллекции объектов с несколькими основными свойствами, включая те, по которым я хотел бы отсортировать коллекцию, и экземпляр объекта каждого типа.

class MyCompositeObject
{
    enum           ObjectType;
    DateTime       CreatedDate;
    string         SomeAttribute;
    myObjectType1  Obj1;
    myObjectType2  Obj2;
{
class MyCompositeObjects : List<MyCompositeObject> { }

А затем пройдите через мои две коллекции объектов, чтобы построить новую составную коллекцию. Очевидно, что это немного грубый метод, но он будет работать. Я получил бы все стандартные функции сортировки и фильтрации представлений в моей новой коллекции составных объектов, и я мог бы поместить в нее шаблон данных для правильного отображения элементов списка в зависимости от того, какой тип фактически хранится в этом составном элементе.

Какие есть предложения, чтобы сделать это более элегантным способом?

c#   .net   wpf   data-binding   collections    

443   3   23:52, 14th August, 2020


Как разместить форму WPF в приложении MFC

Я ищу любые ресурсы для размещения формы WPF в существующем приложении MFC. Может ли кто-нибудь указать мне в правильном направлении, как это сделать?

c#   wpf   mfc    

374   1   08:41, 1st August, 2020


Переменные привязки в WPF

Я создаю UserControl для богатого TreeView (тот, который имеет контекстные меню для переименования узлов, добавления дочерних узлов и т. д.). Я хочу иметь возможность использовать этот элемент управления для управления или навигации по любым иерархическим структурам данных, которые я создам. В настоящее время он работает для любой структуры данных, которая реализует следующий интерфейс (интерфейс на самом деле не должен быть реализован, однако требуется только присутствие этих членов):

interface ITreeItem
{
    string Header { get; set; }
    IEnumerable Children { get; }
}

Затем в моем UserControl я использую шаблоны для привязки моего дерева к структуре данных, например:

<TextBlock x:Name="HeaderTextBlock" Text="{Binding Path=Header}" />

То, что я хотел бы сделать, это определить имя каждого из этих членов в моем RichTreeView, позволяя ему адаптироваться к ряду различных структур данных, например:

class MyItem
{
    string Name { get; set; }
    ObservableCollection<MyItem> Items;
}

<uc:RichTreeView ItemSource={Binding Source={StaticResource MyItemsProvider}} 
    HeaderProperty="Name" ChildrenProperty="Items" />

Есть ли способ выставить путь привязки внутри UserControl как публичное свойство этого UserControl? Есть ли какой-то другой способ решить эту проблему?

c#   wpf   data-binding    

406   1   05:09, 27th August, 2020


Предотвращение утечек памяти с помощью прикрепленных моделей поведения

Я создал "attached behaviour" в своем приложении WPF, которое позволяет мне обрабатывать нажатие клавиши Enter и переходить к следующему элементу управления. Я называю его EnterKeyTraversal.IsEnabled, и вы можете увидеть код на моем блоге здесь .

Моя главная проблема сейчас заключается в том, что у меня может быть утечка памяти, так как я обрабатываю событие PreviewKeyDown на UIElements и никогда явно не "unhook" событие.

Как лучше всего предотвратить эту утечку (если она действительно существует)? Следует ли мне сохранить список элементов, которыми я управляю, и отцепить событие PreviewKeyDown в событии Application.Exit? Удалось ли кому-нибудь добиться успеха с привязанным поведением в своих собственных приложениях WPF и придумать элегантное решение для управления памятью?

.net   wpf   memory    

524   11   22:53, 27th August, 2020


Как получить список установленных BitmapEncoders / декодеров (мир WPF)?

В WindowsForms world вы можете получить список доступных кодеров/декодеров изображений с помощью

System.Drawing.ImageCodecInfo.GetImageDecoders() / GetImageEncoders()

Мой вопрос заключается в том, есть ли способ сделать что-то аналогичное для мира WPF, что позволило бы мне получить список доступных

System.Windows.Media.Imaging.BitmapDecoder / BitmapEncoder

c#   wpf   bitmap    

416   2   17:09, 15th August, 2020


Как применить несколько стилей в WPF

В WPF, как бы я применил несколько стилей к FrameworkElement ? Например, у меня есть элемент управления, который уже имеет стиль. У меня также есть отдельный стиль, который я хотел бы добавить к нему, не сдувая первый. Стили имеют разные TargetTypes, поэтому я не могу просто расширить один с другим.

.net   wpf   styles    

674   11   06:33, 25th August, 2020


Включение кнопки в WPF в зависимости от ListBox.SelectedIndex

У меня есть довольно классическая ситуация UI - два ListBoxes с именами SelectedItems и AvailableItems -идея заключается в том , что элементы, которые вы уже выбрали, живут в SelectedItems, в то время как элементы, доступные для добавления в SelectedItems (т. е. каждый элемент, который еще не там), живут в AvailableItems .

Кроме того, у меня есть кнопки < и > для перемещения текущего выбора из одного списка в другой (в дополнение к двойному щелчку, который отлично работает).

Можно ли в WPF настроить стиль / триггер для включения или отключения кнопок перемещения в зависимости от того, что было выбрано в любом ListBox? SelectedItems находится слева, поэтому кнопка < переместит выбранный AvailableItems в этот список. Однако, если никакие элементы не выбраны ( AvailableItems.SelectedIndex == -1 ), я хочу, чтобы эта кнопка была отключена ( IsEnabled == false ) - и наоборот для других list/button.

Возможно ли это сделать непосредственно в XAML, или мне нужно создать сложную логику в codebehind, чтобы справиться с этим?

wpf   listbox    

457   2   14:47, 14th August, 2020


Как правильно создать приложение с одним экземпляром WPF?

Используя C# и WPF под .NET (а не Windows формы или консоль), как правильно создать приложение, которое можно запустить только в одном экземпляре?

Я знаю, что это как-то связано с какой-то мифической вещью, называемой a mutex, и редко могу найти кого-то, кто потрудился бы остановиться и объяснить, что это такое.

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

c#   .net   wpf   mutex    

886   25   05:37, 29th August, 2020


Мощные инструменты для создания графического интерфейса ОС Х?

Что бы вы порекомендовали для разработки OS X графического приложения, подобного тем, которые возможны в WPF?

Мой конкретный фон находится в Smalltalk & Java, но в настоящее время я работаю в основном в DHTML/.NET (ASP.NET/C#).

wpf   user-interface   macos   frameworks    

443   8   20:07, 21st August, 2020


Включение кнопки в WPF в зависимости от ListBox.SelectedIndex

У меня есть довольно классическая ситуация UI - два ListBoxes с именами SelectedItems и AvailableItems -идея заключается в том , что элементы, которые вы уже выбрали, живут в SelectedItems, в то время как элементы, доступные для добавления в SelectedItems (т. е. каждый элемент, который еще не там), живут в AvailableItems .

Кроме того, у меня есть кнопки < и > для перемещения текущего выбора из одного списка в другой (в дополнение к двойному щелчку, который отлично работает).

Можно ли в WPF настроить стиль / триггер для включения или отключения кнопок перемещения в зависимости от того, что было выбрано в любом ListBox? SelectedItems находится слева, поэтому кнопка < переместит выбранный AvailableItems в этот список. Однако, если никакие элементы не выбраны ( AvailableItems.SelectedIndex == -1 ), я хочу, чтобы эта кнопка была отключена ( IsEnabled == false ) - и наоборот для других list/button.

Возможно ли это сделать непосредственно в XAML, или мне нужно создать сложную логику в codebehind, чтобы справиться с этим?

wpf   listbox    

475   2   21:31, 1st August, 2020


Как остановить анимацию в C# / WPF?

У меня есть что-то вроде этого:

barProgress.BeginAnimation(RangeBase.ValueProperty, new DoubleAnimation(
    barProgress.Value, dNextProgressValue,
    new Duration(TimeSpan.FromSeconds(dDuration)));

Теперь, как бы вы остановили эту анимацию ( DoubleAnimation)? Причина, по которой я хочу это сделать, заключается в том, что я хотел бы начать новую анимацию (кажется, это работает, но трудно сказать) и в конечном итоге остановить последнюю анимацию...

c#   wpf    

671   8   11:09, 10th August, 2020


Изображение UriSource и привязка данных

Я пытаюсь привязать список пользовательских объектов к изображению WPF, как это:

<Image>
    <Image.Source>
        <BitmapImage UriSource="{Binding Path=ImagePath}" />
    </Image.Source>
</Image>

Но это не работает. Это ошибка, которую я получаю:

"Свойство 'UriSource' или свойство 'StreamSource' должно быть установлено."

Что я упускаю из виду?

.net   wpf   data-binding   xaml    

523   6   09:48, 17th August, 2020


WPF способ устранения сглаживания

Сглаживание не может быть отключено в WPF. Но я хочу удалить размытый вид шрифтов WPF, когда они маленькие.

Одним из возможных вариантов было бы использование компонента .net 2.0. Это выглядит так, как будто он потеряет способность прозрачности и поддержку смешивания. Хотя никогда не пробовал.

У кого-нибудь есть решение для этого? Есть ли у него какие-то недостатки?

Спасибо

.net   wpf    

449   6   10:57, 21st August, 2020


Когда инициализируется NavigationService?

Я хочу поймать событие NavigationService.Navigating с моей страницы, чтобы предотвратить переход пользователя вперед. У меня есть обработчик событий, определенный таким образом:

void PreventForwardNavigation(object sender, NavigatingCancelEventArgs e)
{
    if (e.NavigationMode == NavigationMode.Forward)
    {
        e.Cancel = true;
    }
}
...

и это прекрасно работает. Однако я не уверен, где именно разместить этот код:

NavigationService.Navigating += PreventForwardNavigation;

Если я помещу его в конструктор страницы или инициализированный обработчик событий, то NavigationService все равно будет null, и я получу NullReferenceException. Однако если я помещаю его в обработчик загруженных событий для страницы, то он вызывается каждый раз при переходе на страницу. Если я правильно понимаю, это означает, что я обрабатываю одно и то же событие несколько раз.

Могу ли я добавить один и тот же обработчик к событию несколько раз (как это произошло бы, если бы я использовал загруженное событие страницы для его подключения)? Если нет, то есть ли какое-то место между инициализацией и загрузкой, где я могу сделать эту проводку?

.net   wpf   navigation    

433   2   19:48, 20th August, 2020


Так чего же мне не хватает с этим вот WPF?

Фон: у меня есть небольшое приложение для воспроизведения видео с UI, вдохновленное почтенным Sasami2k, только что обновленное для использования VMR9 (т. е. Direct3D9 с DirectShow) и менее нестабильное. В настоящее время это приложение C++, использующее raw Win32, по необходимости: ни один из различных наборов инструментов не стоит ни гроша. WPF, в частности, было невозможно из-за ограничений его воздушного пространства.

OK, так что теперь, когда существует D3DImage, вполне возможно смешать и сопоставить D3D/VMR9/DirectShow и WPF. Учитывая прошлые разочарования в неразрешимости Win32, это кажется хорошей вещью.

Но знаешь, я падаю на первом же препятствии здесь.

С помощью Win32 я создал (очень легко) окно без границ, которое можно изменять, изменять размер пропорционально, привязывать к краям экрана и занимать весь экран (включая область панели задач) при максимальном увеличении. Это видео-приложение, так что все это довольно желательные свойства.

OK, так как же сделать то же самое с WPF?

В Win32 я использую: WM_GETMINMAXINFO для управления максимизацией поведения WM_NCHITTEST для управления изменением размера границ WM_MOVING для управления snap-to-screen-edges WM_SIZING для управления соотношением сторон изменения размера

Однако, глядя на WPF, кажется, что различные события прибывают слишком поздно, если я не ошибаюсь в документации?

Например, я не знаю, когда я нахожусь в середине движения, так как LocationChanged говорит, что он срабатывает только после перемещения окна (что слишком поздно). Аналогично, похоже, что StateChanged срабатывает только после восстановления/максимизации окна (когда мне нужна информация до максимизации, чтобы сообщить системе правильный максимальный размер).

И я, кажется, совершенно упускаю из виду, где система говорит мне о размерах. Точно так же и хит-тестирование.

Итак, эм, я что-то упускаю здесь, или у меня нет другого выбора, кроме как вернуться к подключению wndproc этой штуки в любом случае? Могу ли я делать то, что хочу, не подключая WndProc?

Если мне придется использовать WndProc, я могу также придерживаться своей существующей кодовой базы; я хочу иметь более простой и чистый код UI, и уход от WndProc является фундаментальным для этого.

Если мне действительно нужно зацепить WndProc, я должен задаться вопросом - почему ? Win32 получил сообщения окна sizing/sized, moving/moved, poschanging/poschanged, и все они полезны. Почему бы WPF не повторить тот же набор событий? Это выглядит как ненужный пробел в функциональности.

Кроме того, это означает, что WPF привязан к конкретной реализации, зависящей от USER32. Это означает, что MS не может (скажем, в Windows 7 или 8) инвертировать слой отображения, чтобы сделать WPF "native" и эмулировать HWNDs и WndProcs для устаревших приложений-даже если это именно то, что должен делать MS.

wpf   winapi    

383   4   19:19, 3rd August, 2020


WPF Listbox стиль с кнопкой

У меня есть ListBox, который имеет стиль, определенный для ListBoxItems. Внутри этого стиля у меня есть несколько ярлыков и кнопка. С помощью этой кнопки я хочу определить событие щелчка, которое может быть обработано на моей странице (или любой странице, которая использует этот стиль). Как создать обработчик событий на странице WPF для обработки события из стиля ListBoxItems?

Вот мой стиль (только затронутый код):

<Style x:Key="UsersTimeOffList"  TargetType="{x:Type ListBoxItem}">
... 
<Grid>
<Button x:Name="btnRemove" Content="Remove" Margin="0,10,40,0" Click="btnRemove_Click" />
</Grid>
</Style>

Спасибо!

c#   wpf    

524   3   16:33, 5th August, 2020


Может кто-нибудь указать мне на некоторые руководства для WPF

У меня возникли проблемы с поиском хороших гидов для WPF.
У меня есть опыт работы в C# и .NET но я ничего не знаю о WPF, кроме обычного маркетингового описания технологии в целом.
Может ли кто-нибудь указать мне на хороший учебник для начинающих/руководство по WPF.

.net   wpf    

380   8   16:38, 6th August, 2020


Где искать верстальщиков XAML (Expression Blend)?

Профессия дизайнера/верстальщика XAML для приложений WPF настолько нова, что традиционные каналы не достаточно эффективны.

.NET   WPF   XAML    

363   5   00:18, 18th August, 2020


.NET, WPF, какую версию .NET выбрать — 3.0 или 3.5

Всем привет!

Ситуация следующая. У нас есть достаточно популярная программа для конечных пользователей (не Enterprise), написанная на WinForms и .NET 2.0. В свое время выбрали именно 2.0, чтобы покрыть как можно большее количество пользователей.

Сейчас планируем разрабатывать новую версию. Хотелось бы сделать красивый и необычный дизайн, поэтому оставаться в рамках WinForms будет не очень удобно, и рассматриваем переход на WPF.

У нас есть такие данные по пользователям:
85-90% уже имеют установленный .NET 3.0
60-65% уже имеют установленный .NET 3.5

Идеально было бы остановиться на .NET 3.0, и не заставлять пользователей выкачивать 200 с лишним мегабайт при установке программы (для некоторых трафик все еще является проблемой).

Переходим к вопросам

1. Чем отличается реализация WPF в .NET 3.0 от .NET 3.5?
2. Добавилось ли в 3.5 что-то новое/нужное/удобное?
3. Есть ли в WPF в 3.0 какие-то критичные/неожиданные дефекты, о которых стоило бы знать?
4. Что бы вы выбрали, если бы были на нашем месте?

Заранее спасибо!

.NET   WPF    

368   5   01:20, 1st October, 2020


Узнать предполагаемый размер Label (C# + WPF)?

Надо узнать, каким будет размер Label в пикселях, если его содержимым будет определённая строка, при этом не отображая сам Label.


Код
Label label = new Label();
label.Content = root.value; //тип string
return label.ActualHeight;
возвращает ноль.

.NET   WPF   Adobe   Photoshop    

599   6   21:06, 1st October, 2020