Частичные объявления "[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