【问题标题】:Hide 'TitleBar' of RadWindow隐藏 RadWindow 的“标题栏”
【发布时间】:2019-01-31 17:23:12
【问题描述】:

我正在使用 Telerik WPF 控件来创建桌面应用程序。

我想让 Radwindow 看起来像一个 UserControl(没有最小、最大、关闭按钮和标题),然后将其作为内容加载到 RadPane。

如果我将视图创建为 UserControl,我可以将其设置为 RadPane 中的内容。

我可以对 RadWindow 做同样的事情,即将它设置为 RadPane 中的内容,但问题是我仍然可以看到标题、关闭按钮

如何隐藏RadWindow'标题栏'?

【问题讨论】:

    标签: c# wpf telerik radwindow


    【解决方案1】:

    你可以用这个技巧做到这一点。

        private void HideHeader()
        {
            var myWindow = new RadWindow();
            var header = FindVisualChildren<Grid>(myWindow).FirstOrDefault(elem => elem.Name == "Header");
            if (header != null)
                header.Visibility = Visibility.Collapsed;
        }
    
        private static IEnumerable<T> FindVisualChildren<T>(DependencyObject parent)
            where T : DependencyObject
        {
            var childrenCount = VisualTreeHelper.GetChildrenCount(parent);
            for (var i = 0; i < childrenCount; i++)
            {
                var child = VisualTreeHelper.GetChild(parent, i);
    
                if (child is T children)
                    yield return children;
    
                foreach (var other in FindVisualChildren<T>(child))
                    yield return other;
            }
        }
    

    【讨论】:

      【解决方案2】:

      您应该创建一个UserControl 并在RadWindowRadPane 中使用它。

      <UserControl x:Class="Q52017840.MyUserCotnrol"
                   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                   xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                   xmlns:local="clr-namespace:Q52017840"
                   mc:Ignorable="d" 
                   d:DesignHeight="450" d:DesignWidth="800">
          <Grid>
              <TextBlock Text="My user control" />
          </Grid>
      </UserControl>
      

      如果您使用名称 MyUserControl 创建了 UserControl,您可以使用它,例如这样:

      RadWindow radWindow = new RadWindow();
      radWindow.Width = 400;
      radWindow.Height = 300;
      radWindow.Content = new MyUserCotnrol();
      
      RadPane radPane1 = new RadPane();
      radPane1.Header = "Document 1";
      radPane1.Content = new MyUserCotnrol();
      

      【讨论】:

      • 对不起。我猜你没有理解我的问题。是的,我可以创建一个“UserControl”并将其加载到“RadWindow”或“RadPane”中。但这样做,我不能改变它的主题。所以,我想使用 Radwindow 而不是 UserControl 并将 'RadWindow' 作为内容加载到 'RadPane' 中。因为,我可以控制动态更改“RadWindow”的主题。直到这一切都很好。但是,当我在 Radpane 中添加“RadWindow”时,它仍然在我想要隐藏的 rad 窗格选项卡中显示最小、最大、关闭按钮和标题栏。
      • @UpendharSingirikonda 如果你想重用控制,你应该听从我的建议。如果您对主题机制有疑问,请使用良好的源代码示例创建另一个问题,例如您可以在 GitHub 上创建示例项目。
      • 我是通过使用 style 改变 BG 颜色实现的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 2013-03-13
      相关资源
      最近更新 更多