Bev*_*van 6 wpf caliburn.micro isenabled
如何添加自定义的公约Caliburn.Micro的IsEnabled控件属性-像已经NameEnabled绑定到IsEnabled并行Name绑定到Text一个文本框.
在某种程度上,我想要实现的类似于CanSave属性可用于启用/禁用绑定到Save方法的按钮的方式,但对于所有控件都是通用的.
nem*_*esv 14
Caliburn.Micro现在(1.3.1)并没有真正支持这种"多重"约定FrameworkElement,你已经描述过了.
编辑:
但是,您可以挂钩到该ViewModelBinder.BindProperties方法,然后您可以实现自己的额外对流.
我更进一步,实现了一个可行的原型,但它不健壮,也不优雅,可能不是正确的方法.但它可以作为一个起点:
static AppBootstrapper()
{
ConventionManager.AddElementConvention<FrameworkElement>(
UIElement.IsEnabledProperty,
"IsEnabled",
"IsEnabledChanged");
var baseBindProperties = ViewModelBinder.BindProperties;
ViewModelBinder.BindProperties =
(frameWorkElements, viewModels) =>
{
foreach (var frameworkElement in frameWorkElements)
{
var propertyName = frameworkElement.Name + "Enabled";
var property = viewModels
.GetPropertyCaseInsensitive(propertyName);
if (property != null)
{
var convention = ConventionManager
.GetElementConvention(typeof(FrameworkElement));
ConventionManager.SetBindingWithoutBindingOverwrite(
viewModels,
propertyName,
property,
frameworkElement,
convention,
convention.GetBindableProperty(frameworkElement));
}
}
return baseBindProperties(frameWorkElements, viewModels);
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5600 次 |
| 最近记录: |