Вопросы с тегами [wpf]

1

голосов
1

ответ
81

Просмотры

Caliburn микро действие на модели-объекта

Использование Caliburn микро вы можете выполнить метод, делая это, и в theViewModel есть метод, как это: общественная пустота ClickMe () {// Метод будет выполняться по нажатию кнопки} Можно ли связать это метод внутри собственности в модели представления? Как это?:
1

голосов
3

ответ
61

Просмотры

Как правильно выполнить асинхронный метод из ViewModel?

Для целей этого вопроса, у меня есть простое окно со следующим XAML: Проверка Когда пользователи вводят текст в TextBox или проверяют CheckBox, я хотел бы выполнить медленную задачу (например, сохранение состояния моей модели в диск). Вот вид модели: класс ViewModel общественности: ViewModelBase // использование GalaSoft.MvvmLight {личное струнный _myText; публичная строка MyText {прибудет => _myText; множество {если (Set (исх _myText, значение)) Save (); }} Частные BOOL _isChecked; общественный BOOL IsChecked {прибудет => _isChecked; множество {если (Set (исх _isChecked, значение)) Save (); }} Частная асинхронной аннулируются Save () {вар ID = Guid.NewGuid (); Debug.WriteLine ($» первая операция сохранения (от MYTEXT) не сделано до второй операции сохранения (от IsChecked) запускается. Это пугает меня немного, потому что, я думаю, данные могут быть сохранены в неправильном порядке и повреждены. Есть хорошая практика для решения такого рода проблем? Я подумал о нескольких возможных решений. Во-первых, использовать что-то вроде Delay = 100 в TextBox связывания. Это заставит метод Save называться после того, как пользователь прекращает печатать в течение 100 мс. Это уродливое решение по различным причинам. Второй заключается в использовании SemaphoreSlim. Внутри метода Save, я могу окружить код с Try /, наконец, использовать семафор, как описано здесь. Это на самом деле работает, но я не уверен, что это лучший способ справиться с этой проблемой. Я представляю себе, данные могут быть сохранены в неправильном порядке и повреждены. Есть хорошая практика для решения такого рода проблем? Я подумал о нескольких возможных решений. Во-первых, использовать что-то вроде Delay = 100 в TextBox связывания. Это заставит метод Save называться после того, как пользователь прекращает печатать в течение 100 мс. Это уродливое решение по различным причинам. Второй заключается в использовании SemaphoreSlim. Внутри метода Save, я могу окружить код с Try /, наконец, использовать семафор, как описано здесь. Это на самом деле работает, но я не уверен, что это лучший способ справиться с этой проблемой. Я представляю себе, данные могут быть сохранены в неправильном порядке и повреждены. Есть хорошая практика для решения такого рода проблем? Я подумал о нескольких возможных решений. Во-первых, использовать что-то вроде Delay = 100 в TextBox связывания. Это заставит метод Save называться после того, как пользователь прекращает печатать в течение 100 мс. Это уродливое решение по различным причинам. Второй заключается в использовании SemaphoreSlim. Внутри метода Save, я могу окружить код с Try /, наконец, использовать семафор, как описано здесь. Это на самом деле работает, но я не уверен, что это лучший способ справиться с этой проблемой. Во-первых, использовать что-то вроде Delay = 100 в TextBox связывания. Это заставит метод Save называться после того, как пользователь прекращает печатать в течение 100 мс. Это уродливое решение по различным причинам. Второй заключается в использовании SemaphoreSlim. Внутри метода Save, я могу окружить код с Try /, наконец, использовать семафор, как описано здесь. Это на самом деле работает, но я не уверен, что это лучший способ справиться с этой проблемой. Во-первых, использовать что-то вроде Delay = 100 в TextBox связывания. Это заставит метод Save называться после того, как пользователь прекращает печатать в течение 100 мс. Это уродливое решение по различным причинам. Второй заключается в использовании SemaphoreSlim. Внутри метода Save, я могу окружить код с Try /, наконец, использовать семафор, как описано здесь. Это на самом деле работает, но я не уверен, что это лучший способ справиться с этой проблемой.
redcurry
1

голосов
2

ответ
8.2k

Просмотры

Как создать овальную кнопку в приложении WPF?

Точно как субъект, как создать кнопку овальную в приложении WPF?
AwkwardCoder
0

голосов
1

ответ
16

Просмотры

WPF C# How to Make Control Draggable with Mouse

I am trying to make a UserControl that drags across the canvas. I am using C# and WPF. I see many examples across the net, but I just need the bare minimum. I found an article: "Draggable Control in WPF" Someone responded with: If you want to do it by hands use following algorithm: On MouseDown event: Save Mouse position, TopLeft position of control, and delta(offset) of these coordinates, and set some boolean field flag eg. IsDragStartted to true. On MouseMove check that drag started and use Mouse position and offset to calculate the new value of TopLeft position of control On MouseUp event set IsDragStarted to false I am having trouble applying this. public partial class UserControl1 : UserControl { private Point startingMousePosition; private Point endingMousePosition; private Point startingControlPosition; bool isDragStarted; public UserControl1() { InitializeComponent(); } private void Grid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if(!isDragStarted) { startingControlPosition.X = Canvas.GetLeft(this); startingControlPosition.Y = Canvas.GetTop(this); startingMousePosition.X = e.GetPosition(this.Parent as Canvas).X; startingMousePosition.Y = e.GetPosition(this.Parent as Canvas).Y; } } private void Grid_PreviewMouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { isDragStarted = true; if (isDragStarted) { endingMousePosition.X = e.GetPosition(this.Parent as Canvas).X; endingMousePosition.Y = e.GetPosition(this.Parent as Canvas).Y; Canvas.SetLeft(this, endingMousePosition.X - startingControlPosition.X); Canvas.SetTop(this, endingMousePosition.Y - startingControlPosition.Y); } } } private void Grid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { isDragStarted = false; } } Here is my code for the Main Window WPF form: { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { UserControl1 userCTL; public MainWindow() { InitializeComponent(); userCTL = new UserControl1(); userCTL.Width = 50; userCTL.Height = 100; Canvas.SetTop(userCTL,20); Canvas.SetLeft(userCTL, 20); CanvasMain.Children.Add(userCTL); } private void Window_Loaded(object sender, RoutedEventArgs e) { AdornerLayer myAdornerLayer = AdornerLayer.GetAdornerLayer(userCTL); if (myAdornerLayer != null) { myAdornerLayer.Add(new SimpleCircleAdorner(userCTL)); } } } } Here is my WPF code for the main Window: I also tried placing adorners so I can eventually resize the control. that went nowhere as got the adorners but they don't do anything. I have all my drag controls in my UserControl1 I created and I got it to drag, but when I click the UserControl1 instance again to drag it a second time it resets to the SetTop(0) and SetLeft (0) locations. It jumps there so weirdly!I was expecting the UserControl1 instance drag to the location of the cursor. It does it on the first try but then I click the UserControl1 to drag it one more time and it jumps to (0,0) or close to it.
pirit4
1

голосов
1

ответ
20

Просмотры

Изображение не принимая все пространство в DataGridCell

У меня есть DataGrid, который показывает эскизы некоторых графических файлов вместе с другими данными. Я использую конвертер для обрезки части изображения, а затем показать, что обрезанное изображение в DataGrid. Вот скриншот сетки: Изображение показывает хорошо, но это очень small.If изменить ширину столбцов с помощью мыши, то есть изменение ширины изображения. Но изображение не в полной мере пространства в cell.Below код, который я использую: Можно видеть, что я поставил все свойства выравнивания ячейки, чтобы растянуть, но это не help.So, как сделать элемент изображения, чтобы взять все пространство в DataGridCell в. Edit: Вот код для преобразователя: объект Преобразовать общественности (значение объекта, тип TargetType, параметр объекта, CultureInfo CultureInfo) {попробуйте {если (значение Кортеж) {Кортеж Кортеж = значение в качестве кортежей; Кортеж rectDims = tuple.Item1; Строка Filepath = tuple.Item2; используя (MyDocument док = MyDocument.Load (Filepath)) {размер вар = doc.Size; ширина = INT (INT) (size.Width); Высота = INT (INT) (size.Height); Прямоугольник cropSection = новый прямоугольник (rectDims.Item1, rectDims.Item3, Math.abs (rectDims.Item1 - rectDims.Item2), Math.abs (rectDims.Item3 - rectDims.Item4)); используя (Изображение = doc.Render (0, ширина, высота, 300, 300, ложь)) {Растровые targetRect = новый Bitmap (cropSection.Width, cropSection.Height); используя (график г = Graphics.FromImage (targetRect)) {g.DrawImage (образ, 0, 0, cropSection, GraphicsUnit.Pixel); } Вернуть BitmapConverter.ToImageSource (targetRect); }}} Еще {возвращать нуль; }} Задвижка (Исключение ех) {возвращение нуль; }}
V K
1

голосов
2

ответ
32

Просмотры

Disallow «фона» Окно от активной WPF

Это один немного трудно объяснить, она имеет больше общего с .NET и операционной системой Windows, чем WPF, но у меня есть приложение WPF, который имеет «MainWindow», и в этом окне есть меню, такие как Файл, Правка и т.д. Если пользователь нажимает на одну из этих пунктов меню, диалоговое окно появится через метод ShowDialog (). Это работает, как я ожидаю, что это, но у меня было требование, чтобы сделать это так, чтобы пользователь не может выбрать неактивное окно на всех. Пользователь может в настоящее время, перейдя на панели задач и выбрав неактивное окно, это будет принести неактивное окно на передний план. Пользователь не сможет сделать что-нибудь, но он находится на верхней части окна, которое должно быть активным. Это даже можно исправить? Спасибо!
J-man
1

голосов
0

ответ
280

Просмотры

Альтернатива для TreeView виджета в Юниверсал Windows,

Я должен разработать программу UWP, и я обнаружил, что использовать обычный TreeView Widget, что поддерживается в Windows Forms, слишком много накладных расходов. Так что я должен заменить эту часть моего GUI с чем-то еще. Это пример моей желаемой иерархии данных Дом № 1 Person # 1 Person # 2 Человек # 3 Человек # 4 Дом № 2 Человек # 1 Человек # 2 Человек # 3 Дом # 3 Человек # 1 TreeView Widget хорошо, потому что я могу выбрать все подузлы родительского узла (все «лица» в «доме»), альтернатива должна поддерживать его, а также и, чтобы сделать это альтернативное решение, как удобно, насколько это возможно
Andrey Mazur
1

голосов
1

ответ
121

Просмотры

Остановка Основная тема с MessageBox

Я запрос к базе данных на отдельный поток и создать MessageBox для пользователя. Я хочу, чтобы пользователь, чтобы остановить то, что он делает, и отвечать на MessageBox. С моим кодом ниже, окно сообщения оленья кожа даже всплывают поверх текущего окна. Пользователю необходимо нажать на панели задач, чтобы увидеть его. Как я могу получить его, чтобы прервать основной поток? Dim Кнопка = значок MessageBoxButton.YesNo Dim = MessageBoxImage.Information дим результат = MessageBox.Show ( "Привет", "Title", кнопка, иконка) Select Case результат Case MessageBoxResult.Yes queryInProgress = 0 cashTransfer.TransactionApproved = 1 Case MessageBoxResult.No queryInProgress = 0 cashTransfer.TransactionApproved = 0 End Select
user9199295
1

голосов
0

ответ
25

Просмотры

VisualDiagnostics.VisualTreeChanged событие без прикрепленного отладчика?

В WPF есть событие, которое вызывает VisualDiagnostics.VisualTreeChanged каждый раз, когда новый элемент добавляется в визуальное дерево (в любом месте). Проблема заключается в том, что это работает только тогда, когда отладчик присоединен к процессу. Есть ли способ обойти это ограничение? Любое другое подобное событие, которое работает без отладчика? Могу ли я симулировать прилагается отладчик? Моя цель состоит в том, чтобы получить список всех элементов определенных типов (Button, TextBox, ComboBox и т.д.) в окне, в том числе полученные от шаблона. Мне это нужно, чтобы установить определенные свойства автоматизации во время выполнения. Одним из возможных вариантов является использование событие Window.LayoutUpdated, но это вызывает очень часто и в большинстве случаев без каких-либо новых элементов добавил. Я бы перебрать все визуальное дерево на каждом обновлении структуры, чтобы найти новые элементы, и я не думаю, что будет очень эффективными. Я бы, конечно, предпочел более прямой метод. Но событие VisualDiagnostics.VisualTreeChanged не является идеальным либо, так как элемент в ивент-арг еще не содержит какой-либо из его детей. Кнопка будет, например, даже не свой собственный текстовый контент пока. Если бы третий вариант, где я мог бы раздобыть весь элемент-фрагмент всех новых элементов, поскольку они добавляют, что было бы здорово. (Пытались перекрывая OnVisualChildrenChanged как хорошо, но это не улавливает новые элементы потомков, только дети, это, кажется) Если бы третий вариант, где я мог бы раздобыть весь элемент-фрагмент всех новых элементов, поскольку они добавляют, что было бы здорово. (Пытались перекрывая OnVisualChildrenChanged как хорошо, но это не улавливает новые элементы потомков, только дети, это, кажется) Если бы третий вариант, где я мог бы раздобыть весь элемент-фрагмент всех новых элементов, поскольку они добавляют, что было бы здорово. (Пытались перекрывая OnVisualChildrenChanged как хорошо, но это не улавливает новые элементы потомков, только дети, это, кажется)
Andreas Zita
1

голосов
1

ответ
80

Просмотры

ListBox Контекстное подпозиция Нажмите

У меня есть ListBox с ContextMenu, я настроил MenuItem для работы только если я нажимаю на выбранном элементе. Это XAML код: Я пытался добавить событие Click в моей MenuItem, но он не работает. Пример: частная пустота MessagesLbCopySubMi_Click (объект отправителя, RoutedEventArgs е) {MessageBox.Show ( "Нажмите событие сделано");
xXConcasXx
1

голосов
0

ответ
33

Просмотры

Referencing resource inside usercontrol not working

I have a Wpf Application with the following structure MainSolution -> Views (folder) -> NextGenDG (WPF Project) ->DisplayResources(folder) -> BRUserControlStyles.xaml Here is BRUserControlStyles.xaml Now I am trying to use the style inside a UserControl that is inside a folder called UserControls as follows. This UserControl is being called in the MainWindow Problem is if I say StaticResource UserControlDarkBackgroundStyle it complains saying the resource is not found. So when I use DynamicResource UserControlDarkBackgroundStyle it dosen't apply the style. Please help. At a glace is my ResourceDictionary path correct?
Nikhil ans
1

голосов
0

ответ
175

Просмотры

Ошибка Xaml при обращении внутренних классов в строго имени сборки

У меня есть своеобразная проблема относительно внутренних классов, используемых в XAML. Проблема заключается в следующем: Мы решили строгого имени всех наших сборок. После сильного присвоения имен, все, но один проект компилируется без сучка под VS 2017. ситуация выглядит следующим образом: Ассамблея Company.Component - компилировать без проблем, и подвергает ее внутренности следующим образом: [сборка: InternalsVisibleTo ( "Company.Component. Тест, ОткрытыйКлюч = {опущен} ")] [сборка: InternalsVisibleTo (" Company.OtherLibrary, ОткрытыйКлюч = {опущен} ")] сборка Company.Component.Test - компилировать без проблем, и может получить доступ к внутренности в Company.Component просто отлично. Все тесты проходят. Company.OtherLibrary - не компилируется вообще, из-за следующую ошибку в одном из своих XAML файлов: только государственные или внутренние классы могут быть использованы в разметке. 'Converter1' не является публичной или внутренней. Файл XAML в вопросе можно увидеть ниже (с названиями изменены): ... Теперь, чтобы ответить на некоторые вопросы: Открытый ключ является правильным открытым ключом (не только маркер) из OtherLibrary сборки. Это фактически тот же, что используется для тестовой сборки. Имя сборки для OtherLibrary такой же, как тот, в его свойствах. Код работал до сильного наименовании. Никакие изменения не были внесены в любой файл кода в проектах (бар AssemblyInfo.cs). Я проверил с VS 2017 года мерзавец сравнить. Отредактированные линии являются те, которые отображаются, а правка вставить открытые ключи. В XAML-пространства имена могут иногда быть найдены, а иногда нет. Это идет только для пространств имен, которые не имеют никаких публичных классов. Все преобразователи видели в док-панели ресурсов Внутренности в сборке Company.Component. Все они дают следующее сообщение об ошибке: типа «{типа}» не доступно. Все библиотеки построены на одной и той же версии каркасных / DLLs. Опорный узел для Company.Component иметь «копию локального» установлен верно. То, что я пытался Очистка Очистка XAML теневого кэша и восстановление. Изменение активного наращивания конфигурации (как платформы и Debug / Release). Ручная очистка всех бин и OBJ каталогов для всех проектов. Restarted как компьютер и VS 2017. Все вышеперечисленное сразу. Существует что-то очень простое, что я, очевидно, упускать из виду. Может кто-то пожалуйста, помогите мне понять, что здесь происходит? Я не имею права (по причинам, опущены), чтобы изменить библиотеку компонентов, кроме сильно называя его.
Erik Nyström
1

голосов
1

ответ
56

Просмотры

Concat более одного свойства в ComboBox

Я хочу Concat некоторые свойства, чтобы показать в ComboBox. Я делаю это как: Это то, что я получаю: Почему выбранный элемент не отображается правильно? Является DisplayMemberPath не определен ItemTemplate?
Parisa
1

голосов
0

ответ
43

Просмотры

How to scroll a FlowDocument which has another FlowDocument in an Expander on it

Я пишу приложение, которое отображает справочную информацию пользователя в виде документа потока, каждая ссылка включает в себя раздел подразделов ссылок на для внутри элемент управления расширителем. Некоторые упрощен код, который демонстрирует структуру: длинные свитки. Когда мышь находится над главным заданием скроллинг работает отлично. Я попробовал многочисленные комбинации настроек Полоса прокрутки, но не могу понять это. EDIT: Хорошо, так что мне удалось это сделать, изменив FlowDocumentScrollViewer, содержащийся в элементе управления Expander, чтобы вместо того, чтобы быть FlowDocumentReader. Это исправили проблему прокрутки, но означало, что я должен был шаблон в FlowDocumentReader для того, чтобы скрыть панель инструментов, которая по умолчанию отображается. Но досадно, то FlowDocumentReader это тяжелее управления ресурсами мудр, а также всегда показывает вертикальную полосу прокрутки, когда в режиме прокрутки. Мне нужно, чтобы отключить полосу прокрутки, как, когда они содержатся в структуре у меня есть, контроль на полную длину с родительскими обработки прокруткой FlowDocumentScrollView. В идеале я бы все равно хочу использовать FlowDocumentScrollView, но нужно решить эту проблему прокрутки.
JPT
1

голосов
1

ответ
413

Просмотры

WPF - отображение «динамические» таблицы

Я хотел бы, чтобы отобразить таблицу элементов в WPF. В общем, это не так сложно, за исключением того, что: я знаю, какие столбцы я хочу, чтобы отобразить только во время выполнения (пользователь в путь определяет их), и я хотел бы, чтобы избежать использования CodeBehind: в XAML, где я хочу, чтобы отобразить таблица внутри DataTemplate, который находится внутри другого DataTemplate и т.д. Вводя CodeBehind будет проблематично (хотя я буду делать, если у меня нет других вариантов). Я хоть использование DataGrid WPF, который является достаточно умен, чтобы извлечь имена столбцов во время выполнения (в зависимости от свойств элементов коллекции), но я знаю, какие столбцы я хочу, чтобы отобразить только во время выполнения - я бы создать объект с определенными свойствами во время выполнения , что также проблематично (если это возможно). Кроме того, я на самом деле не нужно использовать специфически DataGrid, так как это будет простая таблица строк для только просмотра - это может быть и отображается, например, в сетке с ItemsControl - Мне просто нужно, чтобы обеспечить представление с столбцами и строками. Таким образом, вопросы: Как настроить отображаемые столбцы в DataGrid только из ViewModel (DataContext) и XAML ?, или Как отображать табличные для просмотра данных, когда столбцы известны только на время выполнения?
Spook
1

голосов
0

ответ
152

Просмотры

Горизонтальные простирания WPF ContextMenu MenuItem в HierarchicalDataTemplate.ItemTemplate

У меня есть приложение, система WPF трее. При щелчке правой кнопкой мыши значок трее есть ContextMenu с помощью HierarchicalDataTemplate, чтобы получить 2 уровня динамически населенной меню. Он работает, но «кликабельны» часть пунктов на 2-м уровне не правильно растянуть доступной ширины родительского контроля. Вместо Смотрите рисунок: Теперь пользователь должен нажать на темную часть (где текст) в MenuItem для выполнения команды этого пункта. Я хочу, чтобы весь строки меню, чтобы иметь возможность для запуска команды. Вот моя XAML: Для полного исходного кода, проверьте https: // GitHub.
kasper
1

голосов
0

ответ
33

Просмотры

JAWS с настольным содержанием в формате

У меня есть приложение WPF чата (на основе RichTextBox), где каждое сообщение в стенограмме обернуто в собственном элементе таблицы. Когда JAWS используется, он читает текст сообщения, а затем говорит: «Таблица». Есть ли способ, чтобы предотвратить JAWS сказать «Таблица» после прочтения каждого сообщения? Чат вид транскрипт:
Evil_Kot
1

голосов
0

ответ
72

Просмотры

Silverlight SelectedRow моделирование

У меня была проблема, изменяя цвет переднего плана для выбранных элементов на DataGrids. Я нашел исправление, которое работает, но это дорого при использовании DataGrids с большим количеством деталей / данных, и это также усложняет дизайн дерево немного больше. Это мой Coding: ... ... ... ... ... Это единственный способ, которым я мог думать, делать это в XAML. Я не знаю, есть ли другие способы сделать это в XAML, а не постукивание по CellPresenter с контрольным каждый раз?
renaldogg
1

голосов
1

ответ
176

Просмотры

«Ввод» не выходя из ячейки в RadGridView

Все вокруг моего проекта я столкнулся с подобной проблемой, которая является «Enter» ключа, создавая новую строку в ячейке, вместо перехода к следующей строке. Моя текущая версия Telerik является 2018.1.122.45, и по умолчанию, ожидаемое поведение, чтобы оставить ячейку, после нажатия клавиши «Enter» (в соответствии с Telerik документации и службы технической поддержки). Тем не менее, в моем случае это всегда делает новые строки в редактируемой ячейке. Я использую тему Visual Studio 2013, моя реализация RadGridView правильно, я вставил свою RadGridView, проецировать, я получил от поддержки Telerik, и там, Enter работает, как ожидалось. Кроме того, они вставили мою реализацию RadGridView к их проекту, и он также работал правильно. Были ли кто-нибудь сталкивался подобной проблемой? Я ищу решение, так как я не могу отслеживать источник этой проблемы (даже с помощью teleriks).
Vanghern
1

голосов
0

ответ
47

Просмотры

Binding Data from Linq Entity Query to DataGrid WPF Formatting Issue

Я могу связать данные из запроса к моей DataGrid, но я встречая проблема, когда я хочу, чтобы отформатировать DataGrid, пожалуйста, прости меня, если это не ясно: у меня есть класс для хранения списка значение, так что я не нужно делать преобразование из C # анонимного типа для того, чтобы использовать запрос общественного класса SoftwareSummaryModel {общественности строки программное обеспечение {получить; задавать; } Общественного ИНТ NumberOfUser {получить; задавать; }} Когда программа запускается, я хотел бы, чтобы загрузить данные по умолчанию для dgSummary общественного MainWindow () {InitializeComponent (); используя (вар контекст = новые QuotingEntities (BuildConnectionString ())) {вар запроса = от р в группе context.SoftwareTrackings р на р. Программное обеспечение в г выбрать новый SoftwareSummaryModel {Программное обеспечение = g.Key, NumberOfUser = g.Count ()}; dgSummary.ItemsSource = query.ToList (); }} Тогда это нормально, DataGrid dgSummary отображает 2 колонки Программное обеспечение и NumberOfUser. Теперь я хотел бы, чтобы зафиксировать ширину 2 колонки (и я сделаю некоторое форматирование): The dgSummary дисплей 2 отформатирован столбцов и 2 ни отформатирован столбцов программного обеспечения и NumberOfUser ~~~~> Всего 4 колонки в то время как я ожидаю, чтобы иметь только 2. DataGrid dgSummary отображает 2 колонки Программное обеспечение и NumberOfUser. Теперь я хотел бы, чтобы зафиксировать ширину 2 колонки (и я сделаю некоторое форматирование): The dgSummary дисплей 2 отформатирован столбцов и 2 ни отформатирован столбцов программного обеспечения и NumberOfUser ~~~~> Всего 4 колонки в то время как я ожидаю, чтобы иметь только 2. DataGrid dgSummary отображает 2 колонки Программное обеспечение и NumberOfUser. Теперь я хотел бы, чтобы зафиксировать ширину 2 колонки (и я сделаю некоторое форматирование): The dgSummary дисплей 2 отформатирован столбцов и 2 ни отформатирован столбцов программного обеспечения и NumberOfUser ~~~~> Всего 4 колонки в то время как я ожидаю, чтобы иметь только 2.
Secret
1

голосов
0

ответ
205

Просмотры

WPF приложение «растровый масштабируются» на удаленном рабочем столе с Hi DPI

без необходимости масштабировать его впоследствии (в системе в любом случае), чтобы сделать его ожидаемый размер. Я попытался установить в app.manifest верно, но это не решило проблему ... Есть идеи? Btw - другие приложения (например, Windows Explorer, может оказывать на ПРРЕ в надлежащем DPI, не позднее масштабируется до соответствия естественного размера (примечание: на высоком DPI все выглядит мало, если не отображаются изначально с высокими точками на дюйме) Я изолировал проблему с. пустое приложение WPF с простым TextBlock для отображения. этого приложение, при запуске на RDP (версия для Windows 10 Творцов или более поздней версии), может быть легко использовано для воспроизведения проблемы (текст соответствующего размера, но растровый масштабируются (как часть целое приложение масштабируется вверх)). Спасибо, Майкл Есть идеи ? Btw - другие приложения (например, Windows Explorer, может оказывать на ПРРЕ в надлежащем DPI, не позднее масштабируется до соответствия естественного размера (примечание: на высоком DPI все выглядит мало, если не отображаются изначально с высокими точками на дюйме) Я изолировал проблему с. пустое приложение WPF с простым TextBlock для отображения. этого приложение, при запуске на RDP (версия для Windows 10 Творцов или более поздней версии), может быть легко использовано для воспроизведения проблемы (текст соответствующего размера, но растровый масштабируются (как часть целое приложение масштабируется вверх)). Спасибо, Майкл Есть идеи ? Btw - другие приложения (например, Windows Explorer, может оказывать на ПРРЕ в надлежащем DPI, не позднее масштабируется до соответствия естественного размера (примечание: на высоком DPI все выглядит мало, если не отображаются изначально с высокими точками на дюйме) Я изолировал проблему с. пустое приложение WPF с простым TextBlock для отображения. этого приложение, при запуске на RDP (версия для Windows 10 Творцов или более поздней версии), может быть легко использовано для воспроизведения проблемы (текст соответствующего размера, но растровый масштабируются (как часть целое приложение масштабируется вверх)). Спасибо, Майкл при запуске на RDP (Windows версии 10 или более поздней версии Creators), могут быть легко использованы для воспроизведения проблемы (Текст соответствующего размера, но растровое масштабируется (в рамках всего приложения масштабируется вверх)). Спасибо, Майкл при запуске на RDP (Windows версии 10 или более поздней версии Creators), могут быть легко использованы для воспроизведения проблемы (Текст соответствующего размера, но растровое масштабируется (в рамках всего приложения масштабируется вверх)). Спасибо, Майкл
Michal.Jan008
1

голосов
0

ответ
141

Просмотры

Изменение WPF текстовое поле текста и сохранить стек отката

У меня есть простой контроль, который является базовым классом Textbox. Я хочу, чтобы изменить текст внутри от этого элемента управления (this.Text = «старый текст + новый текст + старый текст»), но она очищает Ctrl + Z стек. У меня есть автозаполнение всплывающего окна и после установки нового значения моего Упра + стек Z возвращается в исходном состоянии. Я прочитал, что он посылает WM_SETTEXT из параметров, так что после этого CTRL + Z сброса стека. Предлагаемое решение выделить текст и после этого изменить значение SelectedText (он будет посылать сообщение EM_REPLACESEL). Но в этом случае действие выбора также будет добавлен в стек. Для примера, если я мой текст Привет Wor, и я вставив World слово из внушения всплывающего окна, то она будет выбирать WoR мир и после этого будет установлено значение Selectedtext в мире. При нажатии Ctrl + Z, я буду видеть выбранный WoR слово, и после нажатия Ctrl + Z еще один раз я буду видеть правильный результат (без выбора). Поэтому я хочу, чтобы выбрать текст, изменить SelectedText и не добавить это действие, чтобы отменить стек. Является ли это возможным? Стандартный метод общественных недействительный InsertSuggestion (строка предложение) {this.Text = this.Text + предложение; } Метод SelectedText общественный недействительный InsertSuggestion (строка предложение, Int начало, Int длина) {this.Select (начало, длина); SelectedText = предложение; }
Armen Mkrtchyan
1

голосов
0

ответ
72

Просмотры

WPF: Как вызвать цель управления для обновления при изменении связывающих элементов объекта

Я искал в течение нескольких часов, чтобы понять это; Я, возможно, пытается найти что-то, что не существует, или мой дизайн от базы. У меня есть страница WPF с DependencyProperty, что ассоциируется с вложенной структурой класса. например: открытые статические чтения DependencyProperty MyDepProperty = DependencyProperty.Register ( "MyDep", TypeOf (MyGrouping), TypeOf (MainWindow)); общественный MyGrouping MyDep {прибудет => (MyGrouping) ПолучитьЗначение (MyDepProperty); установить => SetValue (MyDepProperty, значение); } Класс MyObject общественности {общественности строку {получить; задавать; } Публичная строка B {получить; задавать; }} Общественного класса MyGrouping {общественного MyObject G1 {получить; задавать; } Общественного MyObject G2 {получить; задавать; } Общественного MyObject G3 {получить; задавать; }} На моей странице управления TextBox, которые связываются с путями в этом свойстве зависимостей. например: Кроме того, на моей странице, для каждой группы, есть кнопка «ясно», в котором я ожидаю, чтобы очистить значения в объекте. Пытаясь удержаться от того, чтобы манипулировать объекты TextBox в коде-позади, я хотел, чтобы иметь возможность корректировать значения непосредственно в свойстве зависимостей и их отражение в контроле авто-магически. например: частная пустота G2Clear_OnClick (объект отправителя, RoutedEventArgs е) {MyDep.G2.A = MyDep.G2.B = ""; // ?? Что я здесь делаю? } Таким образом, вопрос: Есть ли способ, что я могу сказать WPF, чтобы вызвать все элементы управления для обновления текущих значений свойств свойства зависимостей в? Я пробовал несколько методов, и они, кажется, не работают - InvalidateProperty (), SetPropertyValue () и т.д. (я Shotgunning, чтобы посмотреть, что работает.) Мой объект имеет конструктор копирования, так что я могу сделать этот: MyDep = новый MyGrouping (MyDep) И это эффективно обновлять элементы управления - но я чувствую, что это радикальный подход; не существует какая-то золотая середина, где я могу просто иметь контроль переоценивать свойство depencency без имени и доступа к каждому и каждому элементу управления на странице?
sbixby
1

голосов
1

ответ
76

Просмотры

Xaml ошибка при использовании Интерактивность WPF

Я получаю следующее сообщение об ошибке, когда я использую Интерактивность:. Error Collection свойство «System.Windows.Controls.Canvas» «Триггеры» равно нулю. Вот мой код: Дело в том, что все работает, как и ожидалось, когда я запускаю программу, я вижу ошибку при компиляции, и я не могу видеть дизайнер, если я закомментировать блок Интерактивность. Любая идея, почему?
Idanis
1

голосов
0

ответ
50

Просмотры

WPF клиент сбросив соединения REST

Обновление: Это не имеет никакого отношения к WPF, так как все клиенты терпят неудачу в настоящее время. Используя WireShark, я вижу, что сервер отправляет пакеты, но они не получили от клиента, и сервер в конечном счете посылает RST-пакет, чтобы убить соединение (которое никогда не делает его клиенту). WPF, кажется, закрытие HTTP соединения, если служба REST занимает много времени, чтобы ответить. Я использую веб-службы REST, который занимает 7 минут, чтобы генерировать ответ в формате JSON. При вызове из Firefox, Android или IOS, я вижу ответ. При вызове из WPF-х HttpWebRequest (или HttpClient или WebClient) с 10 минут ожидания, сообщает веб-сервис «переподключение пэром», когда он пытается возвращения JSON через 7 минут, а на отметке 10 минут, HttpWebRequest бросает ошибку тайм-аута , Вот одна версия кода: попробуйте {// Создать запрос HttpWebRequest запросить = WebRequest.Create (URL) в качестве HttpWebRequest; // Установка таймаута request.Timeout = 10 * 60 * 1000; request.ReadWriteTimeout = 10 * 60 * 1000; request.ContinueTimeout = 10 * 60 * 1000; // Получение отчаянным (я старался не делать ничего из этого) request.KeepAlive = истина; request.ProtocolVersion = HttpVersion.Version10; request.ServicePoint.ConnectionLeaseTimeout = 10 * 60 * 1000; request.ServicePoint.MaxIdleTime = 10 * 60 * 1000; // Попытка получить ответ WebResponse данные = request.GetResponse (); Поток Поток = response.GetResponseStream (); StreamReader ср = новый StreamReader (поток); Строка содержание = sr.ReadToEnd (); label1.Content = content.Length.ToString (); } Поймать (Exception ее) {// Конец здесь label1.Content = ee.Message; } Я также попытался HttpClient, WebClient и RestSharp с теми же результатами. Если служба быстро реагирует, WPF корректно получает данные. В приступе depiration, я также использовал Regedit для установки TcpTimedWaitDelay 19 минут, на всякий случай. Вот что я думаю, что происходит: минута 0: WPF делает запрос к веб-службы REST-то: WPF (или что-то от его имени) посылает пакет RST на сервер, чтобы убить соединение (от чего делает «сброс соединения пэром "имею в виду) минуту 7: REST веб-службы заканчивает обработку, считывает RST пакет, и закрывает соединение без ответа минуты 10: WPF таймаут истекает после того, как без ответа, бросает исключение кто-нибудь там знают, что происходит и как я могу отладить этот ? Спасибо! Если служба быстро реагирует, WPF корректно получает данные. В приступе depiration, я также использовал Regedit для установки TcpTimedWaitDelay 19 минут, на всякий случай. Вот что я думаю, что происходит: минута 0: WPF делает запрос к веб-службы REST-то: WPF (или что-то от его имени) посылает пакет RST на сервер, чтобы убить соединение (от чего делает «сброс соединения пэром "имею в виду) минуту 7: REST веб-службы заканчивает обработку, считывает RST пакет, и закрывает соединение без ответа минуты 10: WPF таймаут истекает после того, как без ответа, бросает исключение кто-нибудь там знают, что происходит и как я могу отладить этот ? Спасибо! Если служба быстро реагирует, WPF корректно получает данные. В приступе depiration, я также использовал Regedit для установки TcpTimedWaitDelay 19 минут, на всякий случай. Вот что я думаю, что происходит: минута 0: WPF делает запрос к веб-службы REST-то: WPF (или что-то от его имени) посылает пакет RST на сервер, чтобы убить соединение (от чего делает «сброс соединения пэром "имею в виду) минуту 7: REST веб-службы заканчивает обработку, считывает RST пакет, и закрывает соединение без ответа минуты 10: WPF таймаут истекает после того, как без ответа, бросает исключение кто-нибудь там знают, что происходит и как я могу отладить этот ? Спасибо! WPF делает запрос к веб-службы REST когда-то: WPF (или что-то от его имени) посылает пакет RST на сервер, чтобы убить соединение (от чего делает «сброс соединения по равному» означает?) Минуту 7: REST отделки веб-службы обработки, считывает RST пакет, и закрывает соединение без ответа минуты 10: WPF таймаут истекает после отсутствия ответа, бросает исключение кто-нибудь там знают, что происходит и как я могу отладить это? Спасибо! WPF делает запрос к веб-службы REST когда-то: WPF (или что-то от его имени) посылает пакет RST на сервер, чтобы убить соединение (от чего делает «сброс соединения по равному» означает?) Минуту 7: REST отделки веб-службы обработки, считывает RST пакет, и закрывает соединение без ответа минуты 10: WPF таймаут истекает после отсутствия ответа, бросает исключение кто-нибудь там знают, что происходит и как я могу отладить это? Спасибо! броски исключение Кто-нибудь там знает, что происходит и как я могу отладить это? Спасибо! броски исключение Кто-нибудь там знает, что происходит и как я могу отладить это? Спасибо!
Ian
1

голосов
0

ответ
506

Просмотры

Image Processing Brightness

Я хочу, чтобы изменить значение яркости изображения в. YouTube имеет много видео для этого, но видео, используемых PictureBox в C #. Я хочу сделать с изображением в МОФ. Но МОФ не использовал изображение для image.source. Нужно BitmapImage. Я пытаюсь что-то, но не работал. Яркость Код: публичный статический Bitmap AdjustBrightness (Растровое изображение, внутр Value) {Bitmap TempBitmap = изображение; плавать FinalValue = (с плавающей точкой) Значение / 255.0f; Растровые NewBitmap = новый Bitmap (TempBitmap.Width, TempBitmap.Height); Графика NewGraphics = Graphics.FromImage (NewBitmap); плавать [] [] = {FloatColorMatrix новый флоат [] {1,0,0,0,0}, новый флоат [] {0,1,0,0,0}, новый флоат [] {0,0,1 , 0,0}, новый флоат [] {0,0,0,1,0}, новый флоат [] {FinalValue, FinalValue, FinalValue, 1,1},}; ColorMatrix NewColorMatrix = новый ColorMatrix (FloatColorMatrix); Атрибуты ImageAttributes = новые ImageAttributes (); Attributes.SetColorMatrix (NewColorMatrix); NewGraphics.DrawImage (TempBitmap, новый прямоугольник (0, 0, TempBitmap.Width, TempBitmap.Height), 0, 0, TempBitmap.Width, TempBitmap.Height, GraphicsUnit.Pixel, атрибуты); Attributes.Dispose (); NewGraphics.Dispose (); вернуться NewBitmap; } Если я пытаюсь это возвращение "не может неявно преобразовать тип 'System.Drawing.Bitmap' в 'System.Windows.Media.ImageSource'": img_goruntucontrol.Source = goruntu.AdjustBrightness (img_bitmap, Int32.Parse (slider_brig.Value.ToString ())); Так что я с помощью растрового ImageSource: BitmapImage BitmapToImageSource (растровый точечный рисунок) {использование (MemoryStream память = новый MemoryStream ()) {bitmap.Save (память, System.Drawing.Imaging.ImageFormat.Bmp); memory.Position = 0; BitmapImage BitmapImage = новый BitmapImage (); bitmapimage.BeginInit (); bitmapimage.StreamSource = память; bitmapimage.CacheOption = BitmapCacheOption.OnLoad; bitmapimage.EndInit (); вернуться BitmapImage; }} Теперь я пытаюсь ImageSource вроде: img_goruntucontrol.Source = BitmapToImageSource (goruntu.AdjustBrightness (img_bitmap, Int32.Parse (slider_brig.Value.ToString ()))); мой код растровый: Bitmap img_bitmap = новый Bitmap (image_source); image_source представляет собой строковое значение. Я пытаюсь запустить возвращение «форматы URI не поддерживается.» для img_bitmap.
1

голосов
0

ответ
129

Просмотры

Command binding in nested data template + wpf + mvvm

I need to pass values from view to view model still preserving mvvm. Let me explain the issue. In above code, When user checks/unchecks the checkbox, i need to send value(content) of checkbox and also value of vLabel from view to view model. Both are within nested Data template. Earlier I used visualtreehelper to retrieve the same but I need to do this more in mvvm format. Hence, want to know if its doable using Command binding and how ? In check box, i binded to OnCheckedCommand but that doesn't seem to invoke OnCheckedExecuted() on check/uncheck. So, how do i get the content of checkbox and vLabel on check/uncheck? public class MainViewModel { public DelegateCommand OnCheckedCommand { get; private set; } public MainViewModel() { OnCheckedCommand = new DelegateCommand(OnCheckedExecuted, CanCheck); } private void OnCheckedExecuted(object parameter) { } private bool CanCheck(object parameter) { return true; } } Any help is appreciated!
jamilia
1

голосов
2

ответ
39

Просмотры

При переходе обратно из другого TabItem, все проверки данных (IDataError) информация о были disappeading

VS2017 решение, иллюстрирующее этот вопрос: https://github.com/ShannonZ/playground.git IDataErrorInfo я реализовал IDataErrorInfo в моем классе ViewModel. ViewModel имеет только два реквизита X & Y и X + Y не должно быть больше, чем 10. ValidatesOnDataErrors = True Все TextBox связывание с X / Y были установлены ValidatesOnDataErrors = правда, что это причуда два TextBox-х годов были красным цветом, так как X + Y = 13 > 10 в начале. Затем, если вы меняете на второй TabItem и вернуться к первому снова, два TextBox-е показывает в нормальном состоянии. Даже если вы измените значение вручную (держать X + Y> 10), информация о ошибках не будет показывать снова. Как решить эту проблему?
Shannon Chow
1

голосов
1

ответ
61

Просмотры

WPF расположение UserControl изменилось в производстве

Я строй UserControl в нашей разработке среде, и это выглядело именно так, как я хотел, чтобы она выглядела. В нашей тестовой и ПРИНЯТИЕ среде он выглядит точно так же. Но, когда мы выпустили его в нашей среде кнопки в нижней части экрана перемещается вверх немного, и теперь чуть больше текстового поля. Как я могу сделать мой UserControl, так что это выглядит так, как я хочу, чтобы в каждой среде? И то, что возможно сделал эту ошибку? Я считаю, что мы используем ту же версию Windows.
Dahinda
1

голосов
0

ответ
50

Просмотры

programmatically add interactivity to shape c#

I have a Canvas in which I'm drawing shapes. I added a rectangle and could easily add a drag option to it: I wish to to do all that automatically. So, I changed the xaml to this: In the ViewModel: private ObservableCollection m_canvasItems = new ObservableCollection(); public ObservableCollection CanvasItems { get => m_canvasItems; set { m_canvasItems = value; OnPropertyChanged(); } } public MainWindowViewModel() { var newRect = new Rectangle { Width = 100, Height = 50, Fill = Brushes.Red }; Canvas.SetLeft(newRect, 197); Canvas.SetTop(newRect, 131); CanvasItems.Add(newRect); } Under the same namespace, I also have this class: public class DragBehavior : Behavior { public Point ElementStartPosition { get; private set; } private Point mouseStartPosition; private readonly TranslateTransform transform = new TranslateTransform(); protected override void OnAttached() { var parent = Application.Current.MainWindow; AssociatedObject.RenderTransform = transform; AssociatedObject.MouseLeftButtonDown += (sender, e) => { ElementStartPosition = AssociatedObject.TranslatePoint(new Point(), parent); mouseStartPosition = e.GetPosition(parent); AssociatedObject.CaptureMouse(); }; AssociatedObject.MouseLeftButtonUp += (sender, e) => { AssociatedObject.ReleaseMouseCapture(); }; AssociatedObject.MouseMove += (sender, e) => { var diff = e.GetPosition(parent) - mouseStartPosition; if (!AssociatedObject.IsMouseCaptured) return; transform.X = diff.X; transform.Y = diff.Y; }; } } So now I wish to achieve what I did in the first xaml - add a drag option to the Rectangle I dynamically created, using the DragBegavior class - from the code behind. Can this thing be achieved?
Idanis
0

голосов
2

ответ
63

Просмотры

Логика позади Thread.Sleep [дублировать]

Этот вопрос уже есть ответ здесь: Thread.sleep () без замораживания пользовательского интерфейса 5 ответов В ниже WPF коды, есть только кнопка и метка. Я ожидал, что поведение должно быть так: я буду видеть, кнопка неактивна и «делать вещи» написано на этикетке, и ТОГДА UI будет заморожен. Но это не так. Я даже не вижу «Doing Stuff» ярлык UI заморожен до начала. Можете ли вы сказать мне логика это? Почему Thread.Sleep делает интерфейс мгновенно заморозить? используя System.Threading.Tasks; используя System.Threading; используя System.Windows; Пространство имен MessagePump {/// /// Взаимодействие логика для MainWindow.xaml /// общественного частичного класса MainWindow: окно {общественных MainWindow () {InitializeComponent (); } Частный аннулируются отправитель btnDoStuff_Click (объект, RoutedEventArgs е) {btnDoStuff.IsEnabled = ложь; lblStatus.Content = "Doing Stuff"; Thread.Sleep (4000); lblStatus.Content = «Не делать ничего»; btnDoStuff.IsEnabled = TRUE; }}};
Lyrk
1

голосов
1

ответ
194

Просмотры

WPF ComboBox закрыт, но выбранный скроллинг меняет пункт

Так что у меня есть несколько списков внутри WPF ComboBox внутри DataGrid (DataGridComboBoxColumn и DataGridTemplateColumn с ComboBox). Однако, когда я изменить выбранный элемент для ComboBox, держать мышь парит над списком, а затем прокручивать, выбранные изменения Элемента. Потому что у меня есть это внутри DataGrid (что может иметь полосы прокрутки, и потому, что некоторые списки имеют 4000+ пунктов Я хочу, чтобы избежать, что это может произойти для конечного пользователя, однако я не могу найти, как отключить эту функцию прокрутки. I . «ве искали уголки Интернета далеко и широко, но я не могу придумать правильное решение для этой проблемы Это мой исходный код для одного из ComboBoxes: Теперь вот кикер к этому вопросу. Все приложение написано в MVVM так исправление должно быть полностью реализовано без кода позади. :) Спасибо за взгляд. С уважением.
Ben
1

голосов
1

ответ
88

Просмотры

Хорошая практика, чтобы избежать больших проблем выключтеля

Привет всем, я работаю на некоторый код для отображения карты, используя MVVM дизайн. Чтобы сделать это быстро, вот некоторые примеры из моего кода. Вот мой ViewModel: общественный запечатанный класс CardViewModel: BindableBase {частное ИНТ _id; общественного ИНТ Id {получить {возвращение _id; } Множество {SetProperty (ссылка _id, значение); }} Общественного CardViewModel (CardDTO карта) {Id = card.Id; }} CardDTO некоторые передачи объекта, который я получаю через вызов службы. Вот код. общественного запечатанного класса CardDTO {общественного ИНТ Id {получить; задавать; }} В представлении, каждая карта отображает другую картину, основанную на его Id. Для этого используется преобразователь. общественный запечатано CharIdToFillConverter: IValueConverter {объекта Преобразовать общественности (значение объекта, тип TargetType, параметр объекта, CultureInfo культура) {вар ID = (целое) значение; Переключатель (ID) {случай 1: возвратить новый ImageBrush (...); Случай 2: возвращение нового ImageBrush (...); по умолчанию: певд NotImplementedException (); }} Общественного объекта ConvertBack (значение объекта, тип TargetType, параметр объекта, CultureInfo культура) {бросить новый NotImplementedException (); }} Я не люблю переключатель в этом коде. Есть ли способ, некоторые хорошая практика, чтобы сделать его чище? Должен ли я использовать полиморфизм вместо моей собственности Id? Спасибо Введите TargetType, параметр объекта, CultureInfo культуры) {певд NotImplementedException (); }} Я не люблю переключатель в этом коде. Есть ли способ, некоторые хорошая практика, чтобы сделать его чище? Должен ли я использовать полиморфизм вместо моей собственности Id? Спасибо Введите TargetType, параметр объекта, CultureInfo культуры) {певд NotImplementedException (); }} Я не люблю переключатель в этом коде. Есть ли способ, некоторые хорошая практика, чтобы сделать его чище? Должен ли я использовать полиморфизм вместо моей собственности Id? Спасибо
rognar
1

голосов
1

ответ
38

Просмотры

В WPF формируют мой флажок в первой строке сетки получить проверяемую после нажатия кнопки в ShowSearchPanelMode, я не хочу, чтобы проверить, пока я не перемещался сетки подряд?

Сетка флажок провериться, когда в ключе поиска Box нажата. Сетка не должна влиять на ключевой прессе ShowSearchPanelMode МОФ! XAML код C # код частной недействительным dgv_Details_KeyDown (объект отправителя, KeyEventArgs е) {попробуйте {INT RowInd = Convert.ToInt32 (dgv_Details.GetRowVisibleIndexByHandle (view.FocusedRowData.RowHandle.Value) .ToString ()); {Если (== e.Key Key.Enter) {если (ShowSearchPanelMode.Always.ToString ()! = "") {INT RowIndex = Convert.ToInt32 (dgv_Details.GetRowVisibleIndexByHandle (view.FocusedRowData.RowHandle.Value) .ToString ( )); . Строка itmId = dgv_Details.GetCellValue (RowIndex, "Код товара") ToString (); Строка check_ = "ложь"; itmId = dgv_Details. GetCellValue (RowIndex, "Код товара") ToString (). check_ = dgv_Details.GetCellValue (RowIndex, "IsSelect") ToString (). если (check_ == "ложно" || check_ == "Ложь") {check_ = "истина"; } Еще {check_ = "ложь"; } IEnumerable строк = dt.Rows.Cast (), где (г => г [ "itmId"] ToString () == itmId.). . Rows.ToList () ForEach (г => r.SetField ( "IsSelect", check_)); dt.AcceptChanges (); dgv_Details.ItemsSource = NULL; dgv_Details.ItemsSource = дт; dgv_Details.RefreshData (); } Dgv_Details.SetFocusedRowCellValue (ShowSearchPanelMode.Default.ToString (), RowInd); }}} Задвижка (Исключение возб) {DXMessageBox.Show (exc.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); }}
Vivek Mahale
1

голосов
1

ответ
158

Просмотры

Как конвертировать ExecutedRoutedEventArgs в RoutedEventArgs?

В XAML У меня есть ListBox MenuItem, что для его Click = «» метод, который я хочу, чтобы повторно использовать существующий метод, но который уже объявлен с (объект отправителя, ExecutedRoutedEventArgs е) параметров. Используя его в качестве так выдает следующую ошибку: Error CS1503 Аргумент 2: не может конвертировать из «System.Windows.RoutedEventArgs» на «System.Windows.Input.ExecutedRoutedEventArgs» Можно ли преобразовать ExecutedRoutedEventArgs в RoutedEventArgs для его работы? или любым другим способом?
elig
1

голосов
0

ответ
157

Просмотры

WPF: How to merge/connect DataGridCells with same Content using MVVM?

actually I'm working on a project which will be able to plan some vocational trainings. For that I need an Output (to print on DIN A3/A2) of this plan. So far so good. Now I have a datagrid for each course, which I want to print. That already works. But instead of many cell contents I only want to display different cell contents. Eg. In calendar week 1 to 5 the student absolves a cours called "course1". After that he absolves the next courses with different course names. The DataGrid should show all 52 calendar weeks. For those Cells (only horizontally) which have the same content(course names) they should be merged/connected to one large cell (as with ColumnSpan) with only one time its course name. The cells should look like this example (from MS Excel): This is how my View looks like: In my ViewModel I have an IObservableCollection: public TestModel PlanningTestModel { get; set; } = new TestModel(); public ObservableCollection CoursePlanningColumns { get; private set; } //Part of my GeneratePlanningColumns -method foreach (string kw in PlanningTestModel.Weeks) { if (i < 52) { var selectedItemBinding = new Binding { Converter = courseUnitSelectedItemConverter, Path = new PropertyPath(string.Format("Aw{0}", (i + 1))), Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }; var selectedColorBinding = new Binding { Converter = hexColorToBackgroundConverter, Path = new PropertyPath(string.Format("Aw{0}", (i + 1))), Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }; Thickness thick = new Thickness(0); var cellStyle = new Style(typeof(DataGridCell)) { Setters = { new Setter(DataGridCell.BorderThicknessProperty,thick ), new Setter(Control.BackgroundProperty, selectedColorBinding), new Setter(FrameworkElement.HeightProperty, 24.0), new Setter(Control.HorizontalContentAlignmentProperty, HorizontalAlignment.Stretch), new Setter(Control.VerticalContentAlignmentProperty, VerticalAlignment.Stretch), new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Center), new Setter(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Stretch) } }; CoursePlanningColumns.Add(new DataGridTextColumn { Header = PlanningTestModel.Weeks[i], HeaderStyle = headerStyle, Binding = selectedItemBinding, CellStyle = cellStyle, IsReadOnly = true }); TrainerPlanningColumns.Add(new DataGridTextColumn { Header = PlanningTestModel.Weeks[i], HeaderStyle = headerStyle, Binding = selectedItemBinding, CellStyle = cellStyle, IsReadOnly = true }); } i++; } This is what I've used as behavior: How do I bind a WPF DataGrid to a variable number of columns? Thanks for your help!
Björn Steinbrink
1

голосов
0

ответ
246

Просмотры

View Source link does not work in Live Visual Tree, Visual Studio 2017

Окружающая среда: Windows 10 Visual Studio 2017 .NET Framework 4.6.2 Целевые Pre-Reqs: Включить среды выполнения инструменты. Отключить управляемый режим совместимости. Создание проекта WPF, шахта включает в себя пользовательские диалоги и кнопки (я не думаю, что это имеет значение, хотя). Шаги: Начало создания в режиме отладки Выберите «Разрешить выбор» из коробки во время выполнения инструментов. Выберите элемент управления на графическом интерфейсе. Выберите «Перейти к Живите Визуальное дерево» выбранный элемент управления идентифицируется в Живой Визуальное дерево. Щелкните правой кнопкой мыши контроль. опция View Source в список, доступна, и интерактивная. Нажмите кнопку "View Source". ВОПРОС: Ничего не происходит, файл не отображается. Право снова щелкните элемент управления, выберите «Показать свойства» под напряжением проводника собственности, рядом с «Local» падение вниз файл, в котором упоминается управление, это активная ссылка «testwindow.
rw_
1

голосов
0

ответ
93

Просмотры

Приложение WPF зависает на подсказке (только внутри Visual Studio)

После обновления проекта VS2010 WPF (который использует неуправляемый код, а если это имеет значение) для VS2017 (наряду с некоторыми другими другими усовершенствованиями, такими как Cuda), при запуске приложения, все работает, пока подсказка не требуется появляться. Странно то, что это происходит только при запуске кода с помощью отладчика (внутри VS), но при работе без него работает отлично (Ctrl + F5, или .exe непосредственно). Подсказке простое текстовое поле всплывающей (Добавление ToolTipService.InitialShowDelay = «5000» делает задержку замораживания в 5 секунд). Приостановка приложения, когда происходит замораживание, трассирование основного потока показывает, что приложение застряло на WaitForSingleObject в ntdll.dll после RaiseToolTipOpeningEvent срабатывают (я предполагаю, что детали, прежде чем, связанные с механизмом WPF для воскрешения подсказка с небольшой задержкой). Вот стек: ntdll.dll NtWaitForSingleObject () Неизвестные символы загружены!. KernelBase.dll! WaitForSingleObjectEx () Неизвестные символы загружены. combase.dll! CDllHost :: MTAInitializeActivators () Строка 830 C ++ символы загружены. combase.dll! CDllHost :: GetApartmentActivators (без знака длиной и hCOMActivator, неподписанные длинные и hWinRTActivator) Линия 622 C ++ символы загружены. [Инлайн кадр] combase.dll! CDllHost :: GetCOMApartmentActivator (без знака длиной &) Строка 133 C ++ символы загружены. [Линейный кадр] combase.dll! DoATApartmentCreate (без знака длиной &) Линия 225 C ++ Символы загружены. combase.dll! CClassCache :: GetActivatorFromDllHost (интермедиат fSixteenBit, внутр isActivatingAppInstalledClass, неподписанные долго dwDllThreadModel неподписанные длинные * phActivator) Линия 3643 C ++ символы загружены. combase.dll! CProcessActivator :: GetApartmentActivator (ActivationPropertiesIn * pInActProperties, ISystemActivator * ppActivator) Линия 1093 C ++ символы загружены. combase.dll! CProcessActivator :: CCICallback (неподписанных долгое dwContext, IUnknown * pUnkOuter, ActivationPropertiesIn * pActIn, IActivationPropertiesIn * pInActProperties, IActivationPropertiesOut * * ppOutActProperties) Линия 1601 C ++ символы загружены. combase.dll! CProcessActivator :: AttemptActivation (ActivationPropertiesIn * pActIn, IUnknown * pUnkOuter, IActivationPropertiesIn * pInActProperties, IActivationPropertiesOut * * ppOutActProperties, HRESULT (CProcessActivator :: *) (без знака длинный, IUnknown *, ActivationPropertiesIn *, IActivationPropertiesIn *, IActivationPropertiesOut *) pfnCtxActCallback, неподписанные долго dwContext) линия 1524 C ++ символы загружены. combase.dll! CProcessActivator :: ActivateByContext (ActivationPropertiesIn * pActIn, IUnknown * pUnkOuter, IActivationPropertiesIn * pInActProperties, IActivationPropertiesOut * * ppOutActProperties, HRESULT (CProcessActivator :: *) (неподписанные длинные, IUnknown *, ActivationPropertiesIn *, IActivationPropertiesIn *, IActivationPropertiesOut *) pfnCtxActCallback) Линия 1368 C ++ символы нагруженные , combase.dll! CProcessActivator :: CreateInstance (IUnknown * pUnkOuter, IActivationPropertiesIn * pInActProperties, IActivationPropertiesOut * * ppOutActProperties) Линия 1268 C ++ символы загружены. combase.dll! ActivationPropertiesIn :: DelegateCreateInstance (IUnknown * pUnkOuter, IActivationPropertiesOut * ppActPropsOut) Line 1932 C ++ символы загружены. combase.dll! CClientContextActivator :: CreateInstance (IUnknown * pUnkOuter, IActivationPropertiesIn * pInActProperties, IActivationPropertiesOut * * ppOutActProperties) Символы Line 567 C ++ загружен. combase.dll! ActivationPropertiesIn :: DelegateCreateInstance (IUnknown * pUnkOuter, IActivationPropertiesOut * ppActPropsOut) Line 1984 C ++ символы загружены. combase.dll! ICoCreateInstanceEx (константный _GUID & OriginalClsid, IUnknown * punkOuter, беззнаковое длинное dwClsCtx, _COSERVERINFO * pServerInfo, беззнаковая длинная dwCount, неподписанные длинные dwActvFlags, tagMULTI_QI * pResults, ActivationPropertiesIn * pActIn) Line 1935 C ++ символов загружены. combase.dll! CComActivator :: DoCreateInstance (константный _GUID & CLSID, IUnknown * punkOuter, беззнаковое длинное dwClsCtx, _COSERVERINFO * pServerInfo, беззнаковая длинная dwCount, tagMULTI_QI * pResults, ActivationPropertiesIn * pActIn) Строка 385 C ++ символы загружены. [Инлайн кадр] combase.dll! CoCreateInstanceEx (Const _GUID & ) Строка 176 С ++ символы загружены. combase.dll! CoCreateInstance (константный _GUID & rclsid, IUnknown * pUnkOuter, беззнаковое длинное dwContext, константный _GUID & riid, аннулируются * PPV) Строка 120 C ++ символы загружены. PGHook.dll! 00007ffd375410a4 () не указаны Нет символы не загружены. UIAutomationCore.dll! BlockingCoreDispatcher :: CreateAndRegisterBlockingCore (аннулируются) Неизвестные символы загружены. UIAutomationCore.dll! BlockingCoreDispatcher :: FinalConstruct (аннулируются) Неизвестные символы загружены. UIAutomationCore.dll! CUIAutomation7 :: FinalConstruct (аннулируются) Неизвестные символы загружены. UIAutomationCore.dll! ATL :: CComObject :: CreateInstance (класс ATL :: CComObject * *) Неизвестные символы загружены. UIAutomationCore.dll! UiaReturnRawElementProvider () Неизвестные символы загружены. UIAutomationProvider.ni.dll! 00007ffd1ab2a933 () символы Неизвестный не загружен. [Успели Native Перехода] Аннотированный UIAutomationProvider.dll кадров! System.Windows.Automation.Provider.AutomationInteropProvider.ReturnRawElementProvider (System.IntPtr HWND, System.IntPtr WPARAM, System.IntPtr LPARAM, System.Windows.Automation.Provider.IRawElementProviderSimple эль) Неизвестные символы загружены. PresentationFramework.dll! System.Windows.Controls.Primitives.Popup.PopupSecurityHelper.ForceMsaaToUiaBridge (System.Windows.Controls.Primitives.PopupRoot popupRoot) Неизвестные символы загружены. PresentationFramework.dll! System.Windows.Controls.Primitives.Popup.CreateWindow (BOOL asyncCall) Неизвестные символы загружены. PresentationFramework.dll! System.Windows.Controls.Primitives.Popup.OnIsOpenChanged (System.Windows.DependencyObject d, System.Windows.DependencyPropertyChangedEventArgs е) Неизвестные символы загружены. WindowsBase.dll! System.Windows. DependencyObject.OnPropertyChanged (System.Windows.DependencyPropertyChangedEventArgs е) Неизвестные символы загружены. PresentationFramework.dll! System.Windows.FrameworkElement.OnPropertyChanged (System.Windows.DependencyPropertyChangedEventArgs е) Неизвестные символы загружены. WindowsBase.dll! System.Windows.DependencyObject.NotifyPropertyChange (System.Windows.DependencyPropertyChangedEventArgs арг) Неизвестные символы загружены. WindowsBase.dll! System.Windows.DependencyObject.UpdateEffectiveValue (System.Windows.EntryIndex entryIndex, System.Windows.DependencyProperty дп, System.Windows.PropertyMetadata метаданные, System.Windows.EffectiveValueEntry oldEntry, исх System.Windows.EffectiveValueEntry newEntry, BOOL coerceWithDeferredReference , BOOL coerceWithCurrentValue, System.Windows.OperationType operationType) Неизвестные символы загружены. WindowsBase.dll! System. Windows.DependencyObject.SetValueCommon (System.Windows.DependencyProperty дп, значение объекта, System.Windows.PropertyMetadata метаданные, BOOL coerceWithDeferredReference, BOOL coerceWithCurrentValue, System.Windows.OperationType operationType, BOOL IsInternal) Неизвестные символы загружены. PresentationFramework.dll! System.Windows.Data.BindingOperations.SetBinding (цель System.Windows.DependencyObject, System.Windows.DependencyProperty дп, System.Windows.Data.BindingBase связывание) Неизвестные символы загружены. PresentationFramework.dll! System.Windows.Controls.Primitives.Popup.CreateRootPopup (System.Windows.Controls.Primitives.Popup всплывающее окно, System.Windows.UIElement ребенка) Неизвестные символы загружены. PresentationFramework.dll! System.Windows.Controls.ToolTip.OnIsOpenChanged (System.Windows.DependencyObject d, System.Windows. DependencyPropertyChangedEventArgs е) Неизвестные символы загружены. WindowsBase.dll! System.Windows.DependencyObject.OnPropertyChanged (System.Windows.DependencyPropertyChangedEventArgs е) Неизвестные символы загружены. PresentationFramework.dll! System.Windows.FrameworkElement.OnPropertyChanged (System.Windows.DependencyPropertyChangedEventArgs е) Неизвестные символы загружены. WindowsBase.dll! System.Windows.DependencyObject.NotifyPropertyChange (System.Windows.DependencyPropertyChangedEventArgs арг) Неизвестные символы загружены. WindowsBase.dll! System.Windows.DependencyObject.UpdateEffectiveValue (System.Windows.EntryIndex entryIndex, System.Windows.DependencyProperty дп, System.Windows.PropertyMetadata метаданные, System.Windows.EffectiveValueEntry oldEntry, исх System.Windows.EffectiveValueEntry newEntry, BOOL coerceWithDeferredReference , BOOL coerceWithCurrentValue, System.Windows.OperationType operationType) Неизвестные символы загружены. WindowsBase.dll! System.Windows.DependencyObject.SetValueCommon (System.Windows.DependencyProperty дп, значение объекта, System.Windows.PropertyMetadata метаданные, BOOL coerceWithDeferredReference, BOOL coerceWithCurrentValue, System.Windows.OperationType operationType, BOOL IsInternal) Неизвестные символы загружены. WindowsBase.dll! System.Windows.DependencyObject.SetValue (System.Windows.DependencyProperty дп, значение объекта) Неизвестные символы загружены. PresentationFramework.dll! System.Windows.Controls.PopupControlService.RaiseToolTipOpeningEvent () Неизвестные символы загружены. WindowsBase.dll! System.Windows.Threading.DispatcherTimer.FireTick (объект не используется) Неизвестные символы загружены. WindowsBase.dll! System.Windows.Threading.ExceptionWrapper.InternalRealCall (System.Delegate обратного вызова, объект арг, ИНТ numArgs) Неизвестные символы загружены. WindowsBase.dll! System.Windows.Threading.ExceptionWrapper.TryCatchWhen (источник объекта, System.Delegate обратного вызова, объект арг, внутр numArgs, System.Delegate catchHandler) неизвестные символы загружены. WindowsBase.dll! System.Windows.Threading.DispatcherOperation.InvokeImpl () Неизвестные символы загружены. WindowsBase.dll! MS.Internal.CulturePreservingExecutionContext.CallbackWrapper (объект OBJ) Неизвестные символы загружены. mscorlib.dll! System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext ExecutionContext, System.Threading.ContextCallback обратного вызова состояния объекта, BOOL preserveSyncCtx) Строка 954 C # Символы загружены. mscorlib.dll! System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext ExecutionContext, System.Threading.ContextCallback обратный вызов, состояния объекта, BOOL preserveSyncCtx) Линия 902 C # Символы загружены. mscorlib.dll! System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext ExecutionContext, System.Threading.ContextCallback обратного вызова, состояний объекта) Строка 891 C # Символы загружены. WindowsBase.dll! MS.Internal.CulturePreservingExecutionContext.Run (MS.Internal.CulturePreservingExecutionContext ExecutionContext, System.Threading.ContextCallback обратного вызова, состояния объекта) Неизвестные символы загружены. WindowsBase.dll! System.Windows.Threading.DispatcherOperation.Invoke () Неизвестные символы загружены. WindowsBase.dll! System.Windows.Threading.Dispatcher.ProcessQueue () Неизвестные символы загружены. WindowsBase.dll! System.Windows.Threading.Dispatcher.WndProcHook (System.IntPtr HWND, внутр тзд, System.IntPtr WPARAM, System.IntPtr LPARAM реф BOOL обрабатываются) Неизвестные символы загружены. WindowsBase.dll! MS.Win32. HwndWrapper.WndProc (System.IntPtr HWND, внутр тзд, System.IntPtr WPARAM, System.IntPtr LPARAM реф BOOL обрабатываются) Неизвестные символы загружены. WindowsBase.dll! MS.Win32.HwndSubclass.DispatcherCallbackOperation (объект о) Неизвестные символы загружены. WindowsBase.dll! System.Windows.Threading.ExceptionWrapper.InternalRealCall (System.Delegate обратного вызова, объект арг, внутр numArgs) Неизвестные символы загружены. WindowsBase.dll! System.Windows.Threading.ExceptionWrapper.TryCatchWhen (источник объекта, System.Delegate обратного вызова, объект арг, внутр numArgs, System.Delegate catchHandler) неизвестные символы загружены. WindowsBase.dll! System.Windows.Threading.Dispatcher.LegacyInvokeImpl (приоритет System.Windows.Threading.DispatcherPriority, System.TimeSpan таймаута, метод System.Delegate, объект арг, внутр numArgs) Неизвестные символы загружены. WindowsBase.dll! MS.Win32.HwndSubclass. SubclassWndProc (System.IntPtr HWND, внутр тзд, System.IntPtr WPARAM, System.IntPtr LPARAM) Неизвестные символы загружены. [Род Managed Перехода] Аннотированный рамка user32.dll! UserCallWinProcCheckWow () Неизвестные символы загружены. User32.dll! DispatchMessageWorker () Неизвестные символы загружены. WindowsBase.ni.dll! 00007ffce783bd98 () символы Неизвестный не загружен. [Успел Native Transition] Аннотированные кадры WindowsBase.dll! System.Windows.Threading.Dispatcher.PushFrameImpl (System.Windows.Threading.DispatcherFrame кадр) Неизвестные символы загружены. PresentationFramework.dll! System.Windows.Application.RunDispatcher (объект игнорировать) неизвестные символы загружены. PresentationFramework.dll! System.Windows.Application.RunInternal (окно System.Windows.Window) Неизвестные символы загружены. MyApplication.exe! MyApplication.App.Main () Неизвестные символы загружены. [Род Managed Перехода] Аннотированный mscoreei.dll рамки! _CorExeMain () Неизвестные символы загружены. mscoree.dll! _CorExeMain_Exported () Неизвестные символы загружены. kernel32.dll! BaseThreadInitThunk () Неизвестные символы загружены. ntdll.dll! RtlUserThreadStart () Неизвестные символы загружены. Я не могу найти нить, которая блокирует основной поток, не сигнализируя выше дождалась объекта. Я попытался вернуться к .NET 4.5.1 (Теперь с помощью 4.7), но это не имело никакого эффекта. При запуске исполняемого файла непосредственно и присоединение к процессу, он работает нормально, так что я сравнил модули, используемые при загрузке с отладчиком и без, и так или иначе ntdll.dll даже не загружается при запуске без отладчика (который является еще более запутанным мне). Поиск в Интернете привел меня не где так что любая помощь или предложения не будут оценены.
ZivS
1

голосов
1

ответ
68

Просмотры

XAML Раскадровка анимации BaseT на EventTrigger из другого элемента

Я хочу, чтобы огонь анимации на одном элементе посредством взаимодействия с другим. У меня есть следующий код: Каждый раз, подогреть EventTrigger обжигает, приложение переходит в режим останова. Зачем?
kolorowezworki
1

голосов
1

ответ
54

Просмотры

Как добиться условной проверки с IDataErrorInfo

У нас есть страница настройки конфигурации в моем MVVM приложения. Один из поля (Property: BackupFolderPath) здесь имеет контроль TextBox. Мы сделали проверку для этого элемента управления с помощью IDataErrorInfo. Проверка в основном, чтобы проверить наличие этого пути. Что Validations были реализованы: О применении запуска, наличие BackupFolderPath проверяется. Если этот путь не существует, приложение получает навигацию на страницу настроек и отметьте пограничный контроль красного цвета. Если пользователь находится на странице настроек и BackupFolderPath существует. Теперь, если мы попытаемся изменить BackupFolderPath затем проверки снова входит в картину и делает пограничного контроля цвета, как красный. Что мы хотим изменить прямо сейчас: Мы хотим сохранить границы красного цвета только при запуске приложения, если путь не существует. Для второго случая, если путь существует, но пользователь пытается изменить что от UI, то мы не хотим называть проверки, что означает Textbox цвет границы не изменится на красный. Мы хотим, чтобы позволить пользователю изменить путь здесь. XAML фрагмент кода: ViewModel фрагмент кода: #region IDataErrorInfo Реализация общественность новая строка Error {получить {возвращение нуль; }} Общественности новая строка этого [строка ColumnName] {получить {строка результата = NULL; переключатель (ColumnName) {случай "BackupFolderPath": если (! Directory.Exists (BackupFolderPath)) результат = "Параметры конфигурации путь: \ '"! "не доступен \" + BackupFolderPath +'; перерыв; по умолчанию: разрыв; } Возвращаемый результат; }} #Endregion частная строка _backupFolderPath = string.Empty; публичная строка BackupFolderPath {получить {вернуться _backupFolderPath; } Множество {если (_backupFolderPath == значение) возвращение; _backupFolderPath = значение; NotifyOfPropertyChange (() => BackupFolderPath); }} } Возвращаемый результат; }} #Endregion частная строка _backupFolderPath = string.Empty; публичная строка BackupFolderPath {получить {вернуться _backupFolderPath; } Множество {если (_backupFolderPath == значение) возвращение; _backupFolderPath = значение; NotifyOfPropertyChange (() => BackupFolderPath); }} } Возвращаемый результат; }} #Endregion частная строка _backupFolderPath = string.Empty; публичная строка BackupFolderPath {получить {вернуться _backupFolderPath; } Множество {если (_backupFolderPath == значение) возвращение; _backupFolderPath = значение; NotifyOfPropertyChange (() => BackupFolderPath); }} BackupFolderPath); }} BackupFolderPath); }}
WpfBee

Просмотр дополнительных вопросов