繁体   English   中英

如何更改WPF中的内容控件内容?

[英]How to change the content control Content in WPF?

在我的项目中,我修改了页眉和页脚,以及可更改的内容。 所以我把ContentControl放在我的窗口。

<Grid>
        <Canvas Name="canvas_Logo" HorizontalAlignment="Center" VerticalAlignment="Top" Width="180">            
            <Image Source="Images/k1.png" Grid.Row="1" Width="180" />
        </Canvas>
        <ContentControl VerticalAlignment="Center" Name="CC1" Grid.Row="2" Height="450"/>
        <Canvas x:Name="canvas_Marque" ClipToBounds="True" Height="60" HorizontalAlignment="Center" VerticalAlignment="Bottom" Width="1022" Background="DarkRed" />
    </Grid>

看起来像这样......

在此输入图像描述

我创建了两个用户控件名称page1,page2。 第1页有一个按钮,当我点击按钮ContentControl显示page2。

所以我在button1_Click中编写了以下代码

MainPage n = new MainPage();
n.CC1.Content = new Page2();

但是在按钮时单击ContentControl没有改变我能为此做些什么?

我的第1页xaml

<Grid Background="AliceBlue">
        <Label Content="Child1" Height="28" HorizontalAlignment="Left" Margin="74,65,0,0" Name="label1" VerticalAlignment="Top" Width="157" />
        <Button Content="load page2 and destroy this" Height="31" HorizontalAlignment="Left" Margin="79,124,0,0" Name="button1" VerticalAlignment="Top" Width="186" Click="button1_Click" />
    </Grid>

第2页xaml

 <Grid Background="CadetBlue">
        <Label Content="This is page 2" Height="28" HorizontalAlignment="Left" Margin="96,82,0,0" Name="label1" VerticalAlignment="Top" Width="148" />
    </Grid>

如何更改WPF中的内容控件内容?

啊,我的朋友......我们再见面......很高兴看到你在你的项目上取得进展......

现在,我的下一个建议是:不要从后面的代码中做这些事情......让XAML绑定它的工作......

通常,使用MVVM,您将在基本视图模型类型的属性上绑定内容控件源。 因此,我们假设VM1VM2都扩展了BasicViewModel ,并且您有一个如下定义的属性:

Public BasicViewModel Current_VM {get;set;}

现在,当您想要交换时,您需要做的就是将Current_VMVM1更改为VM2 ,绑定将完成剩下的工作,将窗口更新为正确的视图(假设您已设置数据模板..但是您永远不会说如果你使用的是MVVM ......)

您无法从Page1 UserControl实例化新的MainPage,因为MainPage已经是Page1的主机(如果我理解你的话)。 如果您要从代码behing(不是最佳实践参考@Noctis)管理页面,那么在这种情况下,您必须完成MainPage.xaml.cs中的所有工作。 然后,您必须找到一些方法将参数传递回MainPage以更改内容。 通常这是在ViewModel中完成的,正如@Noctis所说。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM