1

我想使用 RadWindow 作为我的 WPF 应用程序的主窗口。使外窗也以整体应用为主题。我使用了这种方法,但之后该应用程序不再显示在任务栏上。在阅读了不同的线程后,我开始知道因为 RadWindow 不是 Window 的子级,所以这就是它不可能的原因。

所以现在我想做的是以某种方式完全隐藏外部窗口并将 RadWindow 用作子级,但所有其他控件的父级。以下是 XAML

<Window x:Class="MyTest.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"
        WindowStyle="None"
        Title="MainWindow" >
    <telerik:RadWindow WindowStartupLocation="CenterScreen" Width="Auto" Height="Auto" x:Name="MyRadWindow">
    <Grid>
      <!-- All Controls here -->
    </Grid>
</telerik:RadWindow>
</Window>

但我无法完全隐藏外窗。它仍然显示边界。然后作为第二步,我必须处理来自 this 的最小化、最大化和窗口关闭事件RadWidow

如果有人尝试过这种方法,请帮助我或提出更好的方法?

这样做的主要目的是将 Outerwindow 的 GUI 与当前的 TelerikTheme 同步。

4

3 回答 3

3

使用 RadWindowInteropHelper 有一个更简单的解决方案,如下所示:

using Telerik.Windows.Controls.Navigation;
public partial class MyRadWindow : RadWindow
{
    public MyRadWindow()
    {
        InitializeComponent();
        RadWindowInteropHelper.SetShowInTaskbar(this, true);
    }
}
于 2014-07-02T12:41:15.770 回答
2

我认为您应该尝试将主类设置为 Telerik 窗口,而不是嵌套在普通窗口中:

<telerik:RadWindow x:Class="MyTest.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"
        WindowStyle="None" WindowStartupLocation="CenterScreen" ShowInTaskbar="True"
        Title="MainWindow" >
    <Grid>
      <!-- All Controls here -->
    </Grid>
</telerik:RadWindow>

不要忘记将 MyTest.MainWindow 的基类更改为 RadWindow

编辑:抱歉没有注意到提供的链接。您可以尝试通过设置以下属性来隐藏主窗口并覆盖其样式:

WindowStyle="None" Background="Transparent" AllowsTransparency ="True"
于 2012-08-10T06:02:13.947 回答
0
  1. 首先打开 MainWindow.xaml 文件并将 Window 声明替换为 RadWindow 声明: <telerik:RadWindow x:Class="RadWindowAsMainWindow.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" Loaded="RadWindow_Loaded_1" Header="MainWindow" Height="350" Width="525"> ... </telerik:RadWindow>

并在代码隐藏中:`

public partial class MainWindow : RadWindow
    {
     ...
    }

2. Then override OnStartup method of the Application class to show the RadWindow:

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

`

  1. 然后在 RadWindowLoad 事件中写下:`

    private void RadWindow_Loaded_1(object sender, RoutedEventArgs e) { var window = this.ParentOfType(); window.ShowInTaskbar = true; }

`

于 2013-07-13T19:48:38.847 回答