Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:更改窗口';每个页面上的标题导航_C#_Wpf_Xaml_Window - Fatal编程技术网

C# WPF:更改窗口';每个页面上的标题导航

C# WPF:更改窗口';每个页面上的标题导航,c#,wpf,xaml,window,C#,Wpf,Xaml,Window,我有一个WPF应用程序由一个窗口MainWindow.xaml 带有标题示例窗口 <Window Title="Sample_Window"> <Grid> <Frame x:Name="mainFrame" Source="/Page1.xaml" /> <Grid> </Window> 我的问题是,我想更改每个导航页面上主窗口的标题 例如,当我进入Page1时。xaml标题应为Sample\u Window-Page1

我有一个
WPF应用程序
由一个窗口
MainWindow.xaml

带有标题示例窗口

<Window
   Title="Sample_Window">
<Grid>
   <Frame x:Name="mainFrame" Source="/Page1.xaml" />
<Grid>
</Window>
我的问题是,我想更改每个导航页面上主窗口的标题

例如,当我进入
Page1时。xaml
标题应为
Sample\u Window-Page1

我在
XAML
中尝试了下面的一段代码:(不起作用)

我也问了这个问题

但我的问题没有得到解决。标题仍然与示例窗口相同

this.Title = "Sample_Window-Page1";

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

如果动态生成页面1的标题(“客户
Joe Smith
Details”),则页面1ViewModel上可能有一个名为title的属性。在这种情况下,您只需从主窗口绑定到框架内容的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>

以上内容对我不起作用,因为它在运行应用程序时加载了[myPage1]。我通过单击主窗口上的按钮来显示[myPage1],以便显示带有静态标题的页面。我在导航中添加了所需的标题文本

MainWindow.xaml

<DockPanel> <Frame x:Name="_mainFrame"/> </DockPanel>

不,它将不起作用,因为这是。标题是更改页面标题的属性。我需要在哪里写这个?在或中,正如我写的“从您的主窗口”中,它应该放在中,我将更新答案以使其更清楚。但它仍然不起作用。。这就是我所做的。。如果您使用的是DataContext.Title,则必须确保Page1具有DataContext,并且DataContext中有Title属性。如果窗口标题是动态的,这很有用。否则,只需绑定到Content.Title(确保Page1具有Title属性设置)。
<Window 
  Title="{Binding ElementName=mainFrame, Path=Content.DataContext.Title}">
  <Grid>
    <Frame x:Name="mainFrame" Source="/Page1.xaml" />
  </Grid>
</Window>
<Window 
  Title="{Binding ElementName=mainFrame, Path=Content.Title}">
  <Grid>
    <Frame x:Name="mainFrame" Source="/Page1.xaml" />
  </Grid>
</Window>
<DockPanel> <Frame x:Name="_mainFrame"/> </DockPanel>
_mainFrame.NavigationService.Navigate(new [myPage1] (Title= "what ever you want displayed"));