【发布时间】:2012-02-26 13:41:29
【问题描述】:
在我的视图模型和模型中,我有一个签名为bool IsPropertyReadOnly(string propertyName) 的方法。此方法确定当前登录的用户是否可以编辑属性值。少数用户将能够编辑属性值,而其他大多数用户将具有只读访问权限。
我不想创建一个属性来返回每个模型属性的只读状态,而是想将IsPropertyReadOny 的结果绑定到TextBox.IsReadOnly 属性。
这是我设想的语法:
<TextBox Text="{Binding Address, Mode=TwoWay}"
IsReadOnly="{Binding MethodName=IsPropertyReadOnly MethodParameter=Address}"
/>
DataContext 包含视图模型,所以基本上我需要将IsReadOnly 绑定到调用((Class)this.DataContext).IsPropertyReadOnly("Address") 的结果
使用ObjectDataProvider 有很多文档,但是对象数据提供程序会创建一个新的对象实例,这不是我想要的。此外,要使用现有实例,我必须在代码隐藏中进行分配。再说一次,不是我想做的。
根据我的研究,从Binding 或MarkupExtension 继承的解决方案似乎更适合我的需求。
任何帮助将不胜感激。
【问题讨论】:
-
这可能是您问题的答案(使用转换器的最后一个答案):Bind to a method in WPF?
标签: wpf xaml data-binding methods markup-extensions