【发布时间】: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