【问题标题】:Resolving External User Control x:Name Convention Bindings in Caliburn.Micro解析 Caliburn.Micro 中的外部用户控件 x:Name 约定绑定
【发布时间】:2011-09-08 00:08:03
【问题描述】:

我想通过 Caliburn.Micro 的约定使用 x:Name 绑定来解析嵌套的卫星用户控件中的属性绑定。

我们视图的 UI 非常标准。我们有一个附属项目,其中包含用户控件,然后用于在我们的视图中组成 UI,类似于下面的示例:

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

此视图的 ViewModel 公开将由构成这些用户控件的组件绑定的属性。

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 约定样式的绑定仅在 View 有 ViewModel 时才有效。在这种情况下,UserControl 本身并不是一个视图。它用于组合视图。

有没有办法让 ViewModel 的绑定解析为嵌套的附属 UserControl 所基于的 View?

【问题讨论】:

    标签: wpf caliburn.micro


    【解决方案1】:

    您需要在使用控件的地方使用 cal:Bind.Model="{Binding}" ; cal 是 Caliburn.Micro 的 xmlns。

    <UserControl x:Class="Company.CompanyView" ...>
        <StackPanel>
            <customControls:CompanyNameControl cal:Bind.Model="{Binding}"/>
            <customControls:CompanyAddressControl cal:Bind.Model="{Binding}"/>
            ....
        </StackPanel>
    </UserControl>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多