![](/img/trans.png)
[英]How to bind a child `UserControl`'s Dependency Property, using `Style`, to a property of the host element's view-model?
[英]Bind view-model property setter to control method
我目前正在处理一个对 MVVM 不友好的自定义控件,它通过普通方法而不是依赖属性公开了很多它的“属性”,或者需要通过方法设置属性,因为需要传递额外的参数。
简单的伪示例:
class TextControl : CustomControl {
void SetText(string text, int fontSize);
string GetText(string defaultValue);
}
现在我想绑定到控件的“文本”,如果需要的话,只需传递一些参数的默认值。 至于“setter”,我可以创建一个附加属性并提供一个回调,然后调用SetText()
,但是“getter”呢? 有没有一种干净的方法来处理这个问题,或者是将视图传递给视图模型的唯一方法?
您可以做的是创建自己的自定义控件,该控件将简单地封装相关控件。 这样,您可以公开 MVVM 的依赖属性,但在其背后的代码中根据需要操纵和调整第三方控件。
您可以创建附加属性来提供绑定,这些属性将在内部操纵“不友好”控件。
一个潜在的优势是附加属性可以用于多个控件。 因此,如果您碰巧有一个共享某些共同属性的第 3 方控件系列,您也许可以编写一组附加属性以用于所有这些属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.