Привязка свойства к Child UserControl - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть проблема, которую я не мог решить до сих пор: Я занимаюсь разработкой приложения на C # / WPF и использую Caliburn.micro в качестве фреймворка. У меня есть несколько панелей меню (в качестве пользовательских элементов управления), которые я хочу использовать во всем приложении (например, меню фильтрации данных для сетки) и отображать их в <ContentControl />. В зависимости от состояния приложения может отображаться другая панель меню.

Теперь я могу управлять всплывающими событиями из View меню в ViewModel родителя. Но я застрял со свойствами: Например, в меню фильтрации нужно вводить текст, когда фильтр применяется мгновенно. Когда у меня было меню в представлении родителя, это было легко: я просто сделал фильтрацию в методе установки свойства.

Есть ли возможность создать своего рода "всплывающее сообщение", похожее на всплывающее сообщение в c.m (оно должно быть двухсторонним!)? Или любой другой (лучший) MVVM-совместимый подход?

Заранее спасибо!

Jan


Минимальный пример:

ParentView.xaml

<UserControl x:Class="App.ParentView">
    <Grid>
        <ContentControl x:Name="Toolbar" />
    </Grid> 
</UserControl>

ParentViewModel.cs

class ParentViewModel : Screen
{
    public ParentViewModel()
    {
        Toolbar = new MenuViewModel();
    }

    private Screen _toolbar;
    public Screen Toolbar
    {
        // get, set ...
    }

    public void LoadDifferentMenu()
    {
        this.Toolbar = new DifferentMenuViewModel();
    }
}

MenuView.xaml

<UserControl x:Class="App.MenuView">
    <Grid>
        <TextBox x:Name="MyText" />
    </Grid>
</UserControl>

MenuViewModel.cs

class MenuViewModel : Screen
{
    public MenuViewModel()
    {   
    }

    private string _myText;
    public string MyText
    {
        // get, set...
    }
}

1 Ответ

0 голосов
/ 15 ноября 2018

Используйте Event Aggregator в caliburn micro для реализации шаблона издателя и подписчика в MVVM.

Связь основана на типе сообщения, поэтому его можно использовать для односторонней или двусторонней связи с соответствующими типами.

Пожалуйста, обратитесь к ссылке https://caliburnmicro.com/documentation/event-aggregator для получения подробной информации о реализации.

...