猿问

XAML中只读属性的OneWayToSource绑定

我正在尝试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。但是我仍然想知道这是否可能。


绝地无双
浏览 903回答 3
3回答

撒科打诨

这是WPF的限制,它是设计使然。在Connect上有报道,这里:只读依赖项属性的OneWayToSource绑定我提出了一个解决方案,可以动态地将只读的依赖项属性推到PushBinding我在此处写过博客的源中。下面的例子不OneWayToSource绑定从只读DP的ActualWidth和ActualHeight到的宽度和高度属性DataContext<TextBlock Name="myTextBlock">&nbsp; &nbsp; <pb:PushBindingManager.PushBindings>&nbsp; &nbsp; &nbsp; &nbsp; <pb:PushBinding TargetProperty="ActualHeight" Path="Height"/>&nbsp; &nbsp; &nbsp; &nbsp; <pb:PushBinding TargetProperty="ActualWidth" Path="Width"/>&nbsp; &nbsp; </pb:PushBindingManager.PushBindings></TextBlock>PushBinding通过使用两个依赖项属性Listener和Mirror来工作。侦听器绑定OneWay到TargetProperty,并在PropertyChangedCallback其中更新Mirror属性,该属性绑定OneWayToSource到Binding中指定的任何内容。演示项目可以在这里下载。它包含源代码和简短的示例用法,如果您对实现细节感兴趣,请访问我的WPF博客。
随时随地看视频慕课网APP
我要回答