2017-02-17 7 views
0

У меня есть WPF application состоят из одного окна MainWindow.xamlWPF: Название изменении окна на каждой странице навигации

с названием 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

В случае, если ваше название страницы1 генерируется динамически («Клиент Joe Smith Details»), у вас может быть свойство на Page1ViewModel, называемое Title. В этом случае вы можете просто привязать к DataContext Содержимое фрейма с вашего MainWindow:

<Window 
    Title="{Binding ElementName=mainFrame, Path=Content.DataContext.Title}"> 
    <Grid> 
    <Frame x:Name="mainFrame" Source="/Page1.xaml" /> 
    </Grid> 
</Window> 

Если Page1 Название является статический текст (Используйте название вместо WindowTitle собственности), то просто привязать к нему напрямую из главного окна:

<Window 
    Title="{Binding ElementName=mainFrame, Path=Content.Title}"> 
    <Grid> 
    <Frame x:Name="mainFrame" Source="/Page1.xaml" /> 
    </Grid> 
</Window> 
+0

Где я должен это написать? В или в

+0

Как я писал «из вашего MainWindow», он должен быть помещен в , я обновлю ответ, чтобы сделать его более понятным. – 3615

+0

Ну, это все еще не работает. Вот что я сделал.

-1
this.Title = "Sample_Window-Page1"; 

Можете ли вы попробовать это? Фреймы не изменяют окно, поэтому заголовок остается, вы должны обновлять заголовок окна при каждом изменении ваших страниц.

+0

Нет, это не сработает, поскольку this.Title является собственностью для изменения страницы titlle –

Смежные вопросы