2012-06-06 2 views
1

Я пытаюсь сделать макет окна пригодным для использования из разных окон. enter image description hereC# wpf layout reusability

Как вы можете видеть из изображения, у меня есть логотип, левый вертикальный индикатор выполнения и две кнопки управления в нижней части окна (плюс строка меню и строка состояния).

Эти части должны быть всегда одинаковыми в разных окнах, а воспроизведение/остановка должны взаимодействовать с временем выполнения с общими частями, а также с частями, которые строятся в середине окна («часть в каждом окне различна»).

Я не могу понять, что я должен использовать для создания стандартного макета, вызываемого из каждого окна, в котором оно мне нужно, сделанное таким образом, что я могу заменить для каждого из этих окон только среднюю часть.

Любые советы? Мне, наверное, просто нужно понять, как идти (грустно быть новичком C# wpf)!

ответ

3

Вы можете использовать элемент управления содержимым, а затем просто переключить содержание

Master page for regions

Эта ссылка имеет то, что вам нужно. Вы можете поместить шаблоны страниц в отдельный файл, если вы будете много перераспределять контент.

0

Если вы создаете пользовательский элемент управления с помощью <ContentPresenter>, где вы хотите, чтобы содержимое переменной было, вы можете вводить свои собственные элементы управления пользователю контроль.

пользовательский элемент управления будет выглядеть так:

<UserControl> 
    <Grid> 
    <!-- Header Stuff --> 

    <ContentPresenter Name="MyContentPresenter" /> 

    <!-- Footer Stuff --> 
    </Grid> 
</UserControl> 

В ваших окнах, вы бы:

<Window> 
    <Grid> 
    <MyUserControl> 
     <MyUserControl.Content> 
     <!-- your window specific code here --> 
     </MyUserControl.Content> 
    </MyUserControl> 
    </Grid> 
</Window> 

Вам нужно будет выставить свойство Content на ваш пользовательский элемент управления, который возвращает/устанавливает свойство Content элемента ContentPresenter в пользовательском элементе управления.

В отделенном коде пользовательского элемента управления:

public object Content 
{ 
    get { return MyContentPresenter.Content; } 
    set { MyContentPresenter.Content = value; } 
}