c# - 当他们获得/失去焦点时,在 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
必须隐藏,第一个必须再次出现。
我想知道如何制作它,但不知道从哪里开始。
我很感激任何建议。
解决方案
粗略的解决方案(没有 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;
}
}
推荐阅读
- python - 在 CIFAR10 数据集上训练深度卷积 GAN 时损失没有变化
- haskell - 运行时错误 - 函数中的非详尽模式
- c++ - 如何只减慢一部分代码而不减慢其余部分?
- c# - 从 ASP.Net 核心 Web API 中的发布请求在基本控制器中分配值
- python - 有没有办法更快地运行这个 Python 片段?
- javascript - 从两个不同的 useEffect 调用一个方法(改变状态)
- kubernetes-helm - 添加命令时:在我的 deployment.yaml 中,我的 pod 变为 CrashLoopBackOff
- javascript - 点击图标展开表格
- reactjs - `defaultValue` 和 `onChange` 防止状态更改更新渲染
- python - Google colab 找不到目录(我的云端硬盘)