МОФ приложения к воспроизводству мой случай (.net 4.0)WindowsFormsHost перехватов сосредоточиться на активизации приложения, даже активирующий по другой форме
- Создание приложения WPF (MainWindow.xaml)
- Добавить пользовательский элемент управления, который содержит Winform текстовое поле (UserConrol1.cs - Winform)
- Поместите UserControl1 в MainWindow.xaml с WindowsFormsHost
- Добавить еще одно окно WPF, который содержит текстовое поле (МОФ) проекта (Window1.xaml)
- Cr ЭАТС и Показать Window1 после MainWindow InitializeComponent
Ваш проект готов,
- Выполнить проект и установить текстовое поле сосредоточено в MainWindow.xaml (что в WindowsFormsHost)
- Деактивировать приложение, открыв окно (Windows, файловый менеджер, блокнот, WinAmp и т.д.)
- Попробуйте написать в текстовом поле, что в окне Window1, щелкнув текстовое поле с помощью мыши
И вы увидите, что вы не можете установить фокус на текстовое поле в Window1, потому что MainWindow Texbox (в winformshost будет украсть ваш фокус на вашем приложении, активированном)
Любая идея?
MainWindow.xaml
<Window x:Class="WinFormsHostFocusProblem.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WinFormsHostFocusProblem"
xmlns:my="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
Title="MainWindow" Height="350" Width="525">
<Grid>
<my:WindowsFormsHost Focusable="False" >
<local:UserControl1>
</local:UserControl1>
</my:WindowsFormsHost>
</Grid>
</Window>
MainWindow.xaml.cs
namespace WinFormsHostFocusProblem
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Window1 window1 = new Window1();
window1.Show();
}
}
}
Window1.xaml
<Window x:Class="WinFormsHostFocusProblem.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WinFormsHostFocusProblem"
xmlns:my="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
SizeToContent="WidthAndHeight"
ResizeMode="NoResize"
Topmost="True"
Title="Window1" Height="300" Width="300" Background="Red">
<Grid>
<TextBox Height="25">asd</TextBox>
</Grid>
</Window>
Window1.xaml.cs
namespace WinFormsHostFocusProblem
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
}
}
Спасибо вам Шон, это полностью фиксирует – yunus
я понял, что эта проблема фиксируется обновление или что-то. Кроме того, мы больше не можем получить '_focusedChild' частное поле. Кому нужно больше :) – yunus