簡體   English   中英

如何制作最頂層的復選框 wpf C#

[英]how can I make a topmost checkbox wpf C#

所以我有一個主要的 windows 加載一個頁面這個頁面是一個設置頁面,我有最上面的設置,因為我正在使用一個頁面來顯示我所做的按鈕:

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

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

但由於某種原因,當我加載我的程序時,我的復選框沒有選中最頂部,所以我怎樣才能讓我的頁面為我的主 window 切換到最頂部。

作為一個最小的、可重現的示例,以下顯然可以在新創建的 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;
        }
    }
}

您正在創建 mainwindow 的新實例,而不是引用現有實例。

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

以上假設您沒有為 mainwindow 指定與默認名稱不同的名稱。 你可能會發現你必須設置 topmost false 然后 true 讓它響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM