首页 > 解决方案 > 当他们获得/失去焦点时,在 XAML 中将一个元素重叠在另一个元素之上的方法是什么?

问题描述

我有两个DockPanel要素:

<DockPanel Margin="10">
    <TextBlock Text="+ Add new note" />
</DockPanel>
<DockPanel Margin="10">
    <ComboBox>
        <ComboBoxItem>One</ComboBoxItem>
        <ComboBoxItem>Two</ComboBoxItem>
    </ComboBox>
    <Button Content="Add Note" DockPanel.Dock="Right" Margin="0" Padding="10,0" />
    <TextBox Margin="10,0"  />
</DockPanel>

我想得到以下结果:一旦我点击第一个DockPanel,它必须被隐藏,而显示第二个。点击按钮后Add Note,第二个DockPanel必须隐藏,第一个必须再次出现。

我想知道如何制作它,但不知道从哪里开始。

我很感激任何建议。

标签: c#wpfxaml

解决方案


粗略的解决方案(没有 MVVM 基础)可能如下:

主窗口.xaml

<Grid>
    <DockPanel Margin="10" x:Name="EditDP" Visibility="Collapsed">
        <ComboBox>
            <ComboBoxItem>One</ComboBoxItem>
            <ComboBoxItem>Two</ComboBoxItem>
        </ComboBox>
        <Button Content="Add Note" DockPanel.Dock="Right" Margin="0" Padding="10,0" Click="ButtonBase_OnClick"/>
        <TextBox Margin="10,0"  />
    </DockPanel>
    <DockPanel x:Name="MainDP" Margin="10" MouseLeftButtonDown="UIElement_OnMouseLeftButtonDown">
        <TextBlock Text="+ Add new note" />
    </DockPanel>
</Grid>

主窗口.xaml.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void UIElement_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        this.MainDP.Visibility = Visibility.Collapsed;
        this.EditDP.Visibility = Visibility.Visible;
    }

    private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
    {
        this.MainDP.Visibility = Visibility.Visible;
        this.EditDP.Visibility = Visibility.Collapsed;
    }
}

推荐阅读