gpt4 book ai didi

c# - 在当前用户控件中单击按钮时显示不同的用户控件

转载 作者:行者123 更新时间:2023-11-30 20:35:22 26 4
gpt4 key购买 nike

我目前有两个用户控件,比如 UC1 和 UC2。我有一个主窗口。在应用程序启动时,UC1 对用户可见。当用户单击 UC1 中的按钮时,UC1 应该消失,而 UC2 应该显示在同一窗口中。我尝试了以下方法:

主窗口.xaml

<Window x:Class="Test.MainWindow"
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"
mc:Ignorable="d" xmlns:my="clr-namespace:Test" WindowState="Maximized">
<Grid>
<my:UC1 />
<my:UC2 Visibility="Collapsed"/>
</Grid>

最初两个 UC 同时可见,所以我制作了 UC2 Collapsed。现在我想让它在单击 UC1 中的按钮时再次可见。我无法从 UC1 访问 UC2 的可见性。

UC1.xaml.cs

  private void button2_click(object sender, MouseButtonEventArgs e)
{
this.Visibility = System.Windows.Visibility.Collapsed;
// What to write here?
}

编辑

对于 2 个 Controller UC1 和 UC2,使用 Tag 属性效果很好。现在我添加了另一个 Controller UC3,它仅在单击不同的按钮后才可见。

所以,最后我有了 UC1、UC2 和 UC3,其中只有 UC1 是可见的。 UC1 有两个按钮,单击第一个按钮时,只有 UC2 应该可见,单击第二个按钮时,只有 UC3 应该可见。

我无法绑定(bind)多个标签。有没有多标签转换器?

最佳答案

<Grid>
<my:UC1 Name="UC1" />
<my:UC2 Name="UC2" Visibility="Collapsed"/>
</Grid>

private void button2_click(object sender, MouseButtonEventArgs e)
{
this.UC1.Visibility = System.Windows.Visibility.Collapsed;
this.UC2.Visibility = System.Windows.Visibility.Visible;
}

编辑:

刚刚意识到您的按钮在 UC1 中。有很多方法可以做到这一点,但这可能是代码最少的一种方法。

<Grid>
<my:UC2 Name="UC2" Visibility="Collapsed" />
<my:UC1 Tag="{Binding ElementName=UC2}" />
</Grid>

private void button2_click(object sender, MouseButtonEventArgs e)
{
this.Visibility = System.Windows.Visibility.Collapsed;

var uc2 = this.Tag as UC2;
if (uc2 != null)
uc2.Visibility = System.Windows.Visibility.Visible;
}

此方法最短,但其他人可能更难弄清楚您写的内容。

如果你想要一个好的方法,在MainWindow上做,绑定(bind)UC2VisibilityUC1 的,并使用转换器。

<Grid>
<Grid.Resources>
<converters:VisibilityInversionConverter x:Key="VisibilityInversionConverter" />
</Grid.Resources>

<my:UC1 Name="UC1" />
<my:UC2 Visibility="{Binding ElementName=UC1, Path=Visibility, Converter={StaticResource VisibilityInversionConverter}}" />
</Grid>

关于c# - 在当前用户控件中单击按钮时显示不同的用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38088220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com