Разрешение внешнего управления пользователем x : Привязки соглашений об именах в Caliburn.Micro

Я бы хотел использовать привязку x: Name для разрешения привязок свойств во вложенных вспомогательных пользовательских элементах управления с помощью соглашений Caliburn.Micro.

Пользовательский интерфейс для наших представлений довольно стандартный. У нас есть вспомогательный проект, который содержит пользовательские элементы управления, которые затем используются для создания пользовательского интерфейса в наших представлениях, как в примере ниже:

<UserControl x:Class="Company.CompanyView" ...>
    <StackPanel>
        <customControls:CompanyNameControl />
        <customControls:CompanyAddressControl />
        ....
    </StackPanel>
</UserControl>

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

class CompanyViewModel : ...
{
    public string CompanyName { get; set; }
    public string CompanyAddressNo { get; set; }
    public string CompanyAddressStreet { get; set; }
    ...
}

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

<UserControl x:Class="CustomControls.CompanyNameControl ...>
    <StackPanel Orientation="Horizontal">            
        <TextBlock Text="Company Name: " />
        <TextBox x:Name="CompanyName" />  <!--This is how I'd like to bind-->
        <TextBox Text="{Binding CompanyName}" /> <!--This is how I currently bind-->
    </StackPanel>
</UserControl>

Насколько я понимаю, в Caliburn.Micro привязка в стиле соглашения x: Name работает только при наличии ViewModel для View. В этом случае UserControl сам по себе не является представлением. Он используется для составления представления.

Есть ли способ разрешить привязку к ViewModel для представления, на основе которого создается вложенный вспомогательный UserControl?

7
задан Adrian 3 June 2011 в 17:35
поделиться