Частичные объявления "[WPFApplication].MainWindow" не должны указывать разные базовые классы.

Я работаю в проекте WPF\Telerik. Я столкнулся с очень странной проблемой, которую я не могу обойти, из-за взаимозависимости функциональности.

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

private void InitializeAutoLogoffFeature()
    {
        HwndSource windowSpecificOSMessageListener = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
        windowSpecificOSMessageListener.AddHook(new HwndSourceHook(CallBackMethod));
        LogOffHelper.LogOffTime = logOffTime;
        LogOffHelper.MakeAutoLogOffEvent += new MakeAutoLogOff(AutoLogOffHelper_MakeAutoLogOffEvent);
        LogOffHelper.StartAutoLogoffOption();

    }

в этом HwndSource windowSpecificOSMessageListener = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle); строка кода я должен пройти окно (this).

Таким образом [Window_Name] окно должно быть реализовано с использованием Window поскольку WindowInteropHelper конструктор принимает только Window тип.

Но когда я намекаю как ниже

public partial class MainWindow : Window
{

Я получаю ошибку,

Partial declarations of '[WPFApplication].MainWindow' must not specify different base classes

этот MainWindow это не Window это Telerik window,

XML показан ниже.

    <telerik:RadWindow x:Class="[WPFApplication].MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
        Header="POS" Height="820" Width="1280" 
        WindowStartupLocation="CenterScreen">

    <telerik:RadWindow.Resources>
..

Это мой App.xaml

<Application x:Class="[WPFApplication].App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         StartupUri="MainWindow"
         >

<Application.Resources>

</Application.Resources>

Я также попытался с помощью этого кода, а также в App.xaml.cs

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        new MainWindow().Show();
        base.OnStartup(e);
    }
}

Как мне преодолеть эту ошибку?

1 ответ

Решение

Если твой MainWindow это RadWindow, тебе нужно

public partial class MainWindow : RadWindow

потому что класс вашего окна в XAML И в .cs должны быть идентичны:

<telerik:RadWindow x:Class="[WPFApplication].MainWindow" ...>
         ^^^^^^^^^

Согласно сообщениям в этой теме, RadWindow использует Window как контейнер, к которому можно получить доступ таким образом

var window = this.ParentOfType<Window>();  

так что вы можете использовать свой RadWindow как MainWindow ( Статья КБ) и передайте стандартное окно WPF в InteropHelper

Другие вопросы по тегам