Тот же XAML, но другой код для пользовательских элементов управления - PullRequest
1 голос
/ 22 февраля 2012

У меня есть 3 пользовательских элемента управления в WPF, которые имеют одну и ту же компоновку (несколько кнопок и вид списка), но код сзади отличается, потому что списки списка представляют коллекции разных классов.

Можно ли как-то использовать один и тот же XAML для трех пользовательских контролей? Потому что прямо сейчас, если я внесу изменения в макет одного XAML, я должен сделать это для двух других вручную.

Спасибо

Ответы [ 2 ]

3 голосов
/ 22 февраля 2012

Это идеальный сценарий для MVVM

Создать сингл UserControl или View

Создайте три разных внутренних класса, которые будут действовать как ViewModel

Для каждого экземпляра UserControl используйте разные ViewModel как DataContext

1 голос
/ 22 февраля 2012

1) Извлечь общий XAML в отдельный файл XAML, а затем в целевом элементе управления использовать его как DataTemplate:

    <!-- 1. CommonView.xaml would contains common XAML -->

    <!-- 2. Below is XAML of the any of three control -->    
    <UserControl>
        <!-- In three controls use shared XAML as data template -->
        <UserControl.Resources>
            <DataTemplate x:Key="sharedTemplate">
                <views:CommonView />
            </DataTemplate>
        </UserControl.Resources>

        <MyControl>
           <ContentPresenter ContentTemplate="{StaticResource sharedTemplate}" />
        </MyControl>
    </UserControl>

2) Привязать каждый элемент управления к отдельной ViewModel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...