0

私は `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);コード行では、window( this) を渡す必要があります。

コンストラクターは型のみを受け入れるため、[Window_Name]ウィンドウを使用して実装する必要があります。WindowWindowInteropHelperWindow

しかし、私が以下のように黙示するとき

public partial class MainWindow : Window
{

エラーが発生します。

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

これMainWindowWindowそのaではありません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);
    }
}

このエラーを克服するにはどうすればよいですか?

4

1 に答える 1

2

あなたMainWindowが の場合RadWindow、必要です

public partial class MainWindow : RadWindow

XAML内と内のウィンドウのクラスは.cs同一である必要があるためです。

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

このスレッドの投稿によると、そのようにアクセスできる as コンテナを使用RadWindowしますWindow

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

RadWindowas MainWindow( KB article ) を使用して、標準の WPF ウィンドウを InteropHelper に渡すことができます。

于 2013-01-15T09:38:30.993 に答える