我有一个WPF application
由一个窗口MainWindow.xaml
标题为 Sample_Window
<Window
Title="Sample_Window">
<Grid>
<Frame x:Name="mainFrame" Source="/Page1.xaml" />
<Grid>
</Window>
和三页:
Page1.xaml
Page2.xaml
Page3.xaml
我的问题是我想在每个页面导航上更改MainWindow的标题
例如,当我登陆Page1.xaml
标题时,应该是Sample_Window-Page1
等。
我在XAML
下面尝试了以下代码:(没有用)
<Page
WindowTitle="Sample_Window-Page1"
Title="Page1">
</Page>
此外,在 CS :(无效)
Page1 mypage= new Page1();
mypage.WindowTitle="Sample_Window-Page1";
我也经历了这个问题How to give title to WPF pages
但没有解决我的问题。标题仍然与 Sample_Window
相同答案 0 :(得分:3)
如果您的Page1标题是动态生成的(&#34;客户Joe Smith
详细信息&#34;),您可能在Page1ViewModel上有一个名为Title的属性。在这种情况下,您只需从MainWindow绑定到Frame的Content的DataContext:
<Window
Title="{Binding ElementName=mainFrame, Path=Content.DataContext.Title}">
<Grid>
<Frame x:Name="mainFrame" Source="/Page1.xaml" />
</Grid>
</Window>
如果你的Page1标题是静态文本(使用Title而不是WindowTitle属性),那么只需从主窗口直接绑定它:
<Window
Title="{Binding ElementName=mainFrame, Path=Content.Title}">
<Grid>
<Frame x:Name="mainFrame" Source="/Page1.xaml" />
</Grid>
</Window>
答案 1 :(得分:0)
以上对我不起作用,因为它在运行应用程序时加载了 [myPage1]。我通过单击 MainWindow 上的按钮显示 [myPage1],以便显示带有静态标题的页面,我将所需的标题文本添加到导航中。
主窗口.xaml
<DockPanel> <Frame x:Name="_mainFrame"/> </DockPanel>
button_click 方法中的 MainWindow.xaml.cs
_mainFrame.NavigationService.Navigate(new [myPage1] (Title= "what ever you want displayed"));
答案 2 :(得分:-1)
this.Title = "Sample_Window-Page1";
你能试试吗?框架不会更改窗口以使标题保持不变,您应该在每次更改页面时更新窗口标题。