【问题标题】:WPF: Loading another Page into current Page frame with its back end codingWPF:使用后端编码将另一个页面加载到当前页面框架中
【发布时间】:2012-05-30 08:21:21
【问题描述】:

我有一个简单的程序。它有一个带有按钮和框架的基本画布。

  <Canvas Width="1200" Height="600" Name="frontPanel" Background="Blue">

         <Button Width="200" Height="90" Content="flipme" Click="flipme" VerticalAlignment="Top" HorizontalAlignment="Left" >
                <Button.RenderTransform>
                      <TransformGroup>
                           <TranslateTransform x:Name="BtnMove" X="500" Y="255" />
                      </TransformGroup>    
                </Button.RenderTransform>
          </Button>

          <Frame Name="wow" Width="1200" Height="600"></Frame>
  </Canvas>

我想要完成的是,将另一个 xaml 页面加载到当前页面及其后端编码。我在网上看到的只是如何加载另一个页面并在加载后添加事件处理程序。

我加载页面的代码如下:

     string basePath = AppDomain.CurrentDomain.BaseDirectory;
     string commonPath = basePath.Remove(basePath.Length - @"\bin\Debug\".Length);
     wow.Source = (new Uri(commonPath + "\\Page2.xaml"));

如果没有附加到 page2.xaml 的单击方法,它可以工作,但是当我将单击事件处理程序附加到 page2.xaml 中的按钮时,程序告诉我:

Failed to create a 'Click' from the text 'button1_Click_1'.' Line number '12' and line position '144'.

所以我的问题是我有什么方法可以一起加载页面和后端编码而无需稍后分配它?因为我将 page2.xaml 制作为带有单独后端编码的单独页面。我需要在 page1.xaml 中加载 page2.xaml 及其后端编码(单击事件处理程序)。我重申,我已经搜索了网络,但仍然没有找到任何解决此问题的方法。

【问题讨论】:

    标签: wpf dynamic load frame


    【解决方案1】:

    XAML 只是一种使用声明式样式构造对象的方式。它不包含任何“代码”,它只是构造对象。

    页面中的代码被放置在一个代码隐藏文件中,该文件是一个标准的 .cs 文件。请注意代码隐藏中的“部分”关键字。这意味着它只是一个类的一部分,另一部分是从 xaml 构建的。这两个部分都被编译到你的最终类中,它对用于创建它的 xaml 一无所知。

    如果您加载一个 XAML 文件,那就是您加载的全部内容。从标记构造的对象。

    如果你想封装代码行为,那么你需要加载一个对象,而不是一个 xaml 文件。想到的最合适的对象是 UserControl,它是从 xaml 文件和您想要的代码隐藏创建的。

    因此,如果您想以自己的行为显示对象,请将它们设为用户控件。 如果您只是想要具有相同行为的不同显示,则将它们加载为 xaml 文件并手动连接您的事件。

    【讨论】:

    • 你能给我一个用户控件的例子吗?一个用户控件的示例不是我要求被喂它我有时间限制来找到解决方案
    • 只需在 Visual Studio 中转到“Add->New Item”,您就会在 WPF 部分下找到 UserControl。这将为您提供一个空白的 xaml 和代码隐藏文件,您应该足够熟悉。这个控件的对象可以像任何股票控件一样直接嵌入到其他 xaml 页面中,或者通过代码添加。
    猜你喜欢
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多