【问题标题】:DataBinding to a Control数据绑定到控件
【发布时间】:2011-11-03 14:59:26
【问题描述】:

我将 Silverlight 与 MVVM 一起使用。

我有一个简单的LoginControl 绑定到LoginControlViewModelLoginControl 已创建并添加到我的 MasterPage

当用户登录我的应用程序时,通过按下LoginControl 上的登录按钮,LoginControlViewModel 将事件发送回MasterPageControlViewModel。此时MasterPageControlViewModel.LoginVisible 属性设置为False

我遇到的问题是 MasterPageView 的 XAML,因为我不知道如何将 LoginControl 绑定到 MasterPageControlViewModel.LoginVisible 属性。以下不起作用。

<Controls:Login x:Name="LoginControl" Style="{StaticResource LoginControlStyle}"
    Visibility="{Binding LoginControlVisibility, Converter={StaticResource BoolConverter}}" />

输出窗口显示以下内容:

System.Windows.Data 错误:BindingExpression 路径错误:在“Silverlight.Controls.LoginControlViewModel”“Silverlight.Controls.LoginControlViewModel”上找不到“LoginControlVisibility”属性 (HashCode=43749873)。 BindingExpression: Path='LoginControlVisibility' DataItem='Silverlight.Controls.LoginControlViewModel' (HashCode=43749873);目标元素是“Controls.Login”(名称=“LoginControl”);目标属性是“可见性”(类型“System.Windows.Visibility”)

知道如何解决这个问题吗?

【问题讨论】:

    标签: silverlight data-binding binding


    【解决方案1】:

    啊,我看到您的属性与控件的 DataContext 位于不同的 ViewModel 上。

    我过去所做的是将LoginControl 放在另一个容器中(比如BorderStackPanel),然后您可以将该面板的Visibility 绑定到您的属性。这样LoginControl 的 DataContext 将保持在 LoginControlViewModel 并且可见性绑定很简单。

    编辑:Silverlight 不支持以下方法。

    或者您可以在LoginControl 上进行复杂的绑定,以查看其父级DataContext

    Visibility="{Binding Path=DataContext.LoginVisible, 
             RelativeSource={RelativeSource FindAncestor, AncestorType=MasterPage},
             Converter={StaticResource BoolConverter}}"
    

    你的属性不是LoginVisible 不是LoginControlVisibility 吗?还是只是问题中的一个错字?

    【讨论】:

    • 对不起,这是一个 typeo 应该是 LoginControlVisibility。我认为要解决它,我需要访问绑定中的相对源 DataContext。我正在阅读这在 Silverlight 中不受支持
    • 我不确定 Silverlight 是否支持它,但请尝试一下。这使它看起来像msdn.microsoft.com/en-us/library/dd553635(v=vs.95).aspx
    • @caa 好的。我的第一个建议就是将可见性绑定到容器上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    相关资源
    最近更新 更多