为了账号安全,请及时绑定邮箱和手机立即绑定

XAML中只读属性的OneWayToSource绑定

XAML中只读属性的OneWayToSource绑定

绝地无双 2019-11-30 10:14:23
我正在尝试Readonly使用OneWayToSourceas模式绑定到属性,但是似乎无法在XAML中完成此操作:<controls:FlagThingy IsModified="{Binding FlagIsModified,                                           ElementName=container,                                           Mode=OneWayToSource}" />我得到:无法设置属性“ FlagThingy.IsModified”,因为它没有可访问的集合访问器。IsModified是只读DependencyProperty的FlagThingy。我想将该值绑定到FlagIsModified容器上的属性。要清楚:FlagThingy.IsModified --> container.FlagIsModified------ READONLY -----     ----- READWRITE --------仅使用XAML可以做到吗?更新:嗯,我通过在容器而不是上设置绑定来解决这种情况FlagThingy。但是我仍然想知道这是否可能。
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

这是WPF的限制,它是设计使然。在Connect上有报道,这里:

只读依赖项属性的OneWayToSource绑定


我提出了一个解决方案,可以动态地将只读的依赖项属性推到PushBinding我在此处写过博客的源中。下面的例子不OneWayToSource绑定从只读DP的ActualWidth和ActualHeight到的宽度和高度属性DataContext


<TextBlock Name="myTextBlock">

    <pb:PushBindingManager.PushBindings>

        <pb:PushBinding TargetProperty="ActualHeight" Path="Height"/>

        <pb:PushBinding TargetProperty="ActualWidth" Path="Width"/>

    </pb:PushBindingManager.PushBindings>

</TextBlock>

PushBinding通过使用两个依赖项属性Listener和Mirror来工作。侦听器绑定OneWay到TargetProperty,并在PropertyChangedCallback其中更新Mirror属性,该属性绑定OneWayToSource到Binding中指定的任何内容。


演示项目可以在这里下载。

它包含源代码和简短的示例用法,如果您对实现细节感兴趣,请访问我的WPF博客。


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 901 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信