WPF:在每个页面导航上更改窗口的标题

时间:2017-02-17 06:00:44

标签: c# wpf xaml window

我有一个WPF application由一个窗口MainWindow.xaml

组成

标题为 Sample_Window

<Window
   Title="Sample_Window">
<Grid>
   <Frame x:Name="mainFrame" Source="/Page1.xaml" />
<Grid>
</Window>

See this image

和三页:

    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

相同

3 个答案:

答案 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";

你能试试吗?框架不会更改窗口以使标题保持不变,您应该在每次更改页面时更新窗口标题。