Если ваш обработчик команды click находится в коде позади вашего главного окна, тогда вам нужно установить
deviceSettingWindow.Owner = this;
https://docs.microsoft.com/en-us/dotnet/api/system.windows.window.owner?view=netframework-4.8
Вот небольшой пример. Он включает кнопку с обработчиком, код которого находится в коде позади -
<Window x:Class="MainWindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ChildWindow"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Button Content="Button" HorizontalAlignment="Left" Margin="114,137,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
</Grid>
</Window>
CodeBehind:
using System.Windows;
namespace MainWindow
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
var childWindow = new ChildWindow.Window1();
childWindow.Owner = this;
childWindow.Show();
}
}
}
Дочернее окно - просто пустое окно
<Window x:Class="ChildWindow.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ChildWindow"
mc:Ignorable="d"
Title="Window1" Height="450" Width="800">
<Grid>
</Grid>
</Window>
дочерний код окна позади
using System.Windows;
namespace ChildWindow
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
}
}
В моем примере, поскольку вы находитесь в коде для MainWindow, this
является ссылкой на MainWindow, а установка childWindow.Owner = this устанавливает владельца childWindow на MainWindow, как я полагаю ты хочешь.
Одна вещь, которая немного меня смущает, это то, что вы используете команду и ссылку на обработчик событий в коде. Я уверен, что это не сработает. Команды должны быть привязаны к ссылке на ICommand - вам нужно реализовать свой собственный класс ICommand или использовать один из MVVM Light или другой WPF MVVM Framework. Получив это, вы можете передать ссылку из родительского окна через Command как CommandParameter. Пример того, как это сделать, см. В передаче текущего окна в качестве CommandParameter
.
Если вы используете обработчик событий в элементе управления, то это может привязаться к реализации обработчика событий в коде, как в моем примере. Вам нужно выбрать один или другой.
Если вы сможете предоставить более подробную информацию о том, как вы настраиваете, мне будет проще предоставить информацию о том, в каком направлении вам нужно идти.