【问题标题】:Set Window.Content to a page by XAML?通过 XAML 将 Window.Content 设置为页面?
【发布时间】:2023-03-16 21:02:01
【问题描述】:
<Window x:Class="MyWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:src="clr-namespace:WpfApplication1"
    Title="ContactsSelector" Height="300" Width="300">
    <Window.Content>
        <src:MyPage>
           <!--MyPage is a page that I created and exists in the project--> 
        </src:MyPage>
    </Window.Content>
</Window>

我想将一个窗口的内容设置为一个页面,就像我以编程方式那样:

Dim w As New MyWindow
Dim p As New MyPage
w.Content = p
w.ShowDialog()

或者在窗口的Load事件中设置,总结一下我希望在xaml中完成。

【问题讨论】:

    标签: wpf xaml window


    【解决方案1】:

    使用 Frame 元素显示页面内容。

    <Window> <Frame Source="/Pages/MyPage.xaml"/> </Window>
    

    【讨论】:

      【解决方案2】:

      尝试这样的操作,其中 MyPageAssembly 指向您的页面所在的程序集,而 MyPage 是页面的名称。

      <Window 
          x:Class="MyWindow" 
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
          xmlns:MyPageAssembly="clr-namespace:MyPage;assembly=MyPageAssembly"
          Title="ContactsSelector" 
          Height="300" 
          Width="300"
          >
          <Window.Content>
              <MyPageAssembly:MyPage />
          </Window.Content>
      </Window>
      

      【讨论】:

      • Picky style point:由于Content是Window的content属性,所以不需要指定Window.Content:这段代码相当于 .
      • 此代码在您发布之前是否对您有用???因为我在问我的问题之前已经尝试过了,我收到以下错误:“无法创建类型为 'MyPage' 的实例。”,如果你的答案因不正确的信息而应该得到 -1,我会很高兴
      • 我以前曾多次使用过这样的代码,如果它对您不起作用,如果您在原始问题中提到它可能会很有用。我的读心能力有点生疏……你确定 xmlns 定义正确吗?您是否尝试在 MyPage 构造函数中添加断点以查看该代码中的某些内容是否引发异常?
      • 它甚至无法编译。我得到的错误是设计时错误。程序集没问题,我什至在智能感知中得到了它的孩子。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多