【问题标题】:how can I make a topmost checkbox wpf C#我怎样才能使最顶层的复选框 wpf C#
【发布时间】:2023-02-18 03:04:50
【问题描述】:

所以我有一个加载页面的主窗口,这个页面是一个设置页面,我有最上面的设置,因为我正在使用一个页面来显示我所做的按钮:

if(TopMostCheckBox.IsChecked == true)
{
    MainWindow main = new MainWindow();
    main.Topmost = true;
}

if(TopMostCheckBox.IsChecked == false)
{
    MainWindow main = new MainWindow();
    main.Topmost = false;
}

但由于某种原因,当我加载我的程序时,我的复选框没有选中最上面的,所以我怎样才能让我的页面在我的主窗口中切换到最上面。

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    回答你的问题标题:

    我怎样才能使最顶层的复选框 WPF C#

    作为一个最小的、可重现的示例,以下显然可以在新创建的 WPF 项目的 MainWindow 代码隐藏中工作:

    XAML:

    <Window x:Class="WpfApp1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApp1"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <Grid>
            <CheckBox Checked="CheckBox_CheckedChanged"
                      Unchecked="CheckBox_CheckedChanged"/>
        </Grid>
    </Window>
    

    主窗口.CS:

    using System.Windows;
    using System.Windows.Controls;
    
    namespace WpfApp1
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void CheckBox_CheckedChanged(object sender, RoutedEventArgs e)
            {
                Topmost = ((CheckBox)sender).IsChecked == true;
            }
        }
    }
    

    【讨论】:

    【解决方案2】:

    您可以在 xaml 中执行此操作

    <Window 
        .........
        Topmost="{Binding ElementName=chkbox, Path=IsChecked}" >
        <Grid>
           <CheckBox x:Name="chkbox" Content="topmost ?" />
        </Grid>
    </Window>
    

    【讨论】:

      【解决方案3】:

      您正在创建 mainwindow 的新实例,而不是引用现有实例。

              if (TopMostCheckBox.IsChecked == true)
              {
                  var main = Application.Current.MainWindow as MainWindow;
                  main.Topmost = true;
              }
      

      以上假设您没有给 mainwindow 一个与默认名称不同的名称。 您可能会发现必须先设置 topmost false 然后设置 true 才能让它响应。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多