Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/44: Рейтинг темы: голосов - 44, средняя оценка - 4.57
OwenGlendower
Супер-модератор
Эксперт .NET
9474 / 8284 / 3546
Регистрация: 17.03.2014
Сообщений: 16,498
Записей в блоге: 1
1

FAQ по WPF

03.06.2016, 14:51. Просмотров 8098. Ответов 3
Метки faq, wpf (Все метки)

Здесь находятся ответы на часто задаваемые вопросы по Windows Presentation Foundation (WPF).
Для добавления сюда новых вопросов и ответов обращайтесь к модераторам или в тему обсуждения FAQ.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2016, 14:51
Ответы с готовыми решениями:

WPF async void fun() для событий контролла. (MapCOntrol.WPF)
Задача: Отмечаем чекбокс элементы и рисуем их на карте. При нажатии на...

Открыть WPF внутри другого WPF окна
Добрый день! Имеется задача: В WPF окне (назовем его MainWindow.xaml с...

Вызов окошка WPF из другого окна WPF
Всем доброго времени суток. Подскажите пожалуйста как мне вызвать из главного...

ColorDialog для WPF. Копии всякого старья для WPF
Последние три дня мучился в поисках ColorDialog для WPF. Не стороннего...

Есть ли в WPF полноценная замена GDI+? Чтобы можно было всё, что можно в GDI+? Просто думаю углубляться в работу с изображениями в WPF или GDI.
Ну собственно весь вопрос в заголовке темы.

3
OwenGlendower
Супер-модератор
Эксперт .NET
9474 / 8284 / 3546
Регистрация: 17.03.2014
Сообщений: 16,498
Записей в блоге: 1
03.06.2016, 15:15  [ТС] 2
Как найти элемент управления по имени на любом уровне вложенности?

В этом может помочь класс System.Windows.Media.VisualTreeHelper и следующая функция:
FindChild<T>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/// <summary>
/// Ищет дочерний элемент с указанным типом и именем в визуальном дереве
/// </summary>
/// <param name="parent">Родительский элемент который содержит искомый элемент</param>
/// <typeparam name="T">Тип искомого элемента</typeparam>
/// <param name="childName">Имя искомого элемента</param>
/// <returns>
/// Элемент с искомым именем и типом;
/// Если childName равен null, то первый элемент с указанным типом;
/// null если искомый элемент не найден.
/// </returns>
public static T FindChild<T>(DependencyObject parent, string childName)
    where T : DependencyObject
{
    if (parent == null) return null;
 
    if (parent is T && parent is FrameworkElement && ((FrameworkElement)parent).Name == childName)
    {
        return (T)parent;
    }
 
    int childrenCount = VisualTreeHelper.GetChildrenCount(parent);
    for (int i = 0; i < childrenCount; i++)
    {
        DependencyObject child = VisualTreeHelper.GetChild(parent, i);
        T obj = FindChild<T>(child, childName);
        if (obj != null) return obj;
    }
 
    return null;
}
5
OwenGlendower
Супер-модератор
Эксперт .NET
9474 / 8284 / 3546
Регистрация: 17.03.2014
Сообщений: 16,498
Записей в блоге: 1
12.06.2016, 18:42  [ТС] 3
Как отключить вывод уведомлений о ошибках JavaScript в элементе управления WebBrowser?

Ответ
Добавьте следующую функцию:
C#
1
2
3
4
5
6
7
8
9
10
using System.Reflection;
...
public void HideScriptErrors(WebBrowser wb, bool Hide)
{
    FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
    if (fiComWebBrowser == null) return;
    object objComWebBrowser = fiComWebBrowser.GetValue(wb);
    if (objComWebBrowser == null) return;
    objComWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { Hide });
}
Затем добавьте подписку на событие Navigated:
C#
1
wb.Navigated += (sender, args) => { HideScriptErrors((WebBrowser)sender, true); };
3
novikov.ea
1010 / 781 / 283
Регистрация: 10.06.2011
Сообщений: 1,476
06.10.2016, 10:36 4
Как исправить ошибку "Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток"?

Ответ
В WPF изменение свойств классов, унаследованных от DispatcherObject (кроме Freezable), возможно только из основного потока программы. Обращение к объектам следует производить через методы Dispatcher.Invoke или Dispatcher.BeginInvoke.
C#
1
2
3
4
this.Dispatcher.Invoke(() =>
{
    /* Код, на котором возникает ошибка */
});
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2016, 10:36

Чем определяется одинаковость урлов /page?FAQ и /page.php?FAQ
Подскажите, пожалуйста, какая опция php или настройка сервера позволяет не...

FAQ по Qt
В данной теме приведены самые часто задаваемые вопросы по Qt и Qt Creator. ...

FAQ
Не могу скачать документацию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru