当前位置: 首页 > 知识库问答 >
问题:

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

潘翊歌
2023-03-14

在我的项目中,我有固定的页眉和页脚,以及可变的内容。所以我已经将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没有改变我能做什么呢?

我的page1 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中的内容控件内容?

共有2个答案

奚无尘
2023-03-14

您不能从Page1用户控件实例化一个新的MainPage,因为MainPage已经是Page1的宿主(如果我没理解错的话)。如果您要从代码指令(而不是最佳实践ref.@noctis)管理页面,那么在本例中,您必须从mainpage.xaml.cs完成所有工作。然后,您必须找到某种方法将参数传递回MainPage以更改内容。通常这是在ViewModel中完成的,正如@Noctis所说。

劳烨
2023-03-14

啊,我的朋友...我们又见面了...很高兴看到你的项目有了进展...

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

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

Public BasicViewModel Current_VM {get;set;}

现在,当您想要交换时,您需要做的就是将current_vmvm1更改为vm2,而绑定将完成其余的工作,将您的窗口更新到正确的视图(假设您设置了数据模板..但您从未说明是否使用MVVM...)

 类似资料:
  • 我有一本书。NETCore2.0WebAPI应用程序,其中我将“Flurl.Http”(版本2.1.0)NuGet包添加到我的项目中。 我正在尝试使用Flurl对一个VisualStudioTeamServices(VSTS)APIendpoint进行简单的RESTAPI调用。 但是,我正在调用的特定VSTS api终结点要求将Content-Type设置为“应用程序/json-补丁json”,而

  • 我正在尝试使用camel实现一个场景,如下所示:- > 将文件和文件的crc值存储在目录中 我的路线如下 但是上传到sftp服务器的文件只是crc文件,因为它在exchange中存在。我应该如何解决这种情况?如果你们中有人遇到过这个问题,请指导我。谢谢

  • 注意:用户界面已经在 Dreamweaver CC 和更高版本中做了简化。因此,您可能在 Dreamweaver CC 和更高版本中找不到本文中描述的一些选项。有关详细信息,请参阅此文章。 关于动态内容 通过对提供内容的服务器行为进行编辑,可以更改页面上的动态内容。例如,您可以编辑记录集服务器行为,以便向页面提供更多的记录。 在“服务器行为”面板中列出了页面上的动态内容。例如,如果向页面中添加了某

  • 我有一个显示列表的导航抽屉和一个显示内容的视页。当单击导航抽屉上列表中的特定项目时,将为所有页面生成一个URL,该URL将导致视图分页程序内容的更改。导航抽屉和查看页处于相同的活动中。view pager中的片段具有从服务器检索内容的URL。我怎样才能找到它? 下面是一些代码: 查看页有三页。适配器如下: 这些页面都有一个URL字段,用于从包含数据的服务器中提取json。所以简而言之,问题是当导航

  • 问题内容: 我一直在玩这个游戏,而且我认为这很简单。我正在尝试将鼠标悬停在“ NEW”标签上。处于悬停状态后,仅使用CSS将内容从“ NEW”更改为“ ADD”。 这是一个JSFiddle,向您展示我正在使用什么。 问题答案: 为此,引入了CSS 内容属性以及和伪元素。

  • 问题内容: http://play.golang.org/p/wYgfLLQYdm 请参阅上面的示例。在我的示例中,方法执行后变量更改不会持续。如何使用struct方法更改struct变量的值? 问题答案: 您的方法接收者是一个值,而不是一个指针。 那意味着那些方法像操作对象的 副本 。 也可以看看: 常见问题“ 我应该在值或指针上定义方法吗? ”。 “ 在Golang中不要被指针与非指针方法接收