使用C#更改XAML元素的内容



在我的主XAML页面中有一个ScrollViewer。在这个ScrollViewer中,我想根据我的主C#代码中的布尔变量显示两个不同的XAML页面。要在ScrollViewer中只显示一个XAML页面,此代码正在工作:

<ScrollViewer HorizontalAlignment="Left" Height="323" Name="Schieber">
<local:Scrollanwendung_standard/>
</ScrollViewer>

正如我所说,还有另一个名为Scrollanwendung_anwendung的XAML页面,我想根据布尔变量来显示它。

在主要的C#代码中,我尝试了以下解决方案,但不起作用:

if(x==true)
{
Schieber.Content=Scrollanwendung_admin
}
else
{
Schieber.Content=Scrollanwendung_standard
}

如何使用布尔变量更改名为SchieberScrollViewer的内容?

设置ScollViewer的内容应该很好。我假设Scrollanwendung_adminScrollanwendung_standard是类型,而不是实例。

<ScrollViewer HorizontalAlignment="Left" Height="323" Name="Schieber">
<local:Scrollanwendung_standard/>
</ScrollViewer>

在XAML中,上面的行将创建Scrollanwendung_standard的新实例。但是,在代码中,您将类型指定为内容,而不是实例

if (x)
{
Schieber.Content = new Scrollanwendung_admin();
}
else
{
Schieber.Content = new Scrollanwendung_standard();
}

您可以将两个页面都放在ScrollViewer中,并隐藏一个页面。然后,每当值发生变化时,您都会显示另一个页面并隐藏第一个页面。类似这样的东西:

SomeWindow.xaml

<ScrollViewer HorizontalAlignment="Left" Height="323" Name="Schieber">
<Grid>
<local:Scrollanwendung_standard x:Name="pageOne"/>
<local:Scrollanwendung_anwendung x:Name="pageTwo" Visibility="Hidden"/>
</Grid>
</ScrollViewer>

SomeWindow.xaml.cs

if(x==true)
{
pageOne.Visibility = Visibility.Hidden;
pageTwo.Visibility = Visibility.Visible;
}
else
{
pageOne.Visibility = Visibility.Visible;
pageTwo.Visibility = Visibility.Hidden;
}

最新更新