gpt4 book ai didi

wpf - 解析外部用户控制 x :Name Convention Bindings in Caliburn. Micro

转载 作者:行者123 更新时间:2023-12-04 11:29:51 24 4
gpt4 key购买 nike

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

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

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

此 View 的 ViewModel 公开了将由组成这些用户控件的组件绑定(bind)的属性。
class CompanyViewModel : ...
{
public string CompanyName { get; set; }
public string CompanyAddressNo { get; set; }
public string CompanyAddressStreet { get; set; }
...
}

用户控件通常很简单,但它们在许多不同的 View 中被大量重用。这是一个可能看起来像的示例:
<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 约定样式绑定(bind)仅在 View 有 ViewModel 时才有效。在这种情况下,UserControl 本身并不是一个 View 。它用于组成 View 。

有没有办法使绑定(bind)解析到 ViewModel 中嵌套的卫星 UserControl 组成的 View?

最佳答案

您需要在使用控件的地方使用 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>

关于wpf - 解析外部用户控制 x :Name Convention Bindings in Caliburn. Micro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6230603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com