gpt4 book ai didi

.net - Caliburn.Micro 设置控件的状态

转载 作者:行者123 更新时间:2023-12-03 10:24:13 25 4
gpt4 key购买 nike

我尝试在 OnActivate 方法中设置属于 View 模型的所有控件的启用/可见性状态。到目前为止,这没问题,但我不确定是否有更好的方法可以在不从 View 模型访问 View 的情况下执行此操作。

最佳答案

是的,使用绑定(bind)。在 XAML 中,设置 Visibility属性绑定(bind)到 View 模型上的公共(public)属性,并使用标准 BooleanToVisibilityConverter将您的布​​尔 View 模型公共(public)属性转换为有效的 Visibility值(value)。

如果您希望创建一个通用解决方案以允许对任何 View 元素的可见性进行配置,那么一种选择是插入 Caliburn.Micro 绑定(bind)过程。例如,您可以将另一个元素添加到 ViewModelBinder.BindProperties调用列表。

我没有对此进行测试,但这里是在 Configure 中完成的。你的 Bootstrap 的方法:

protected override void Configure()
{
ViewModelBinder.BindProperties += (namedElements, viewModelType) =>
{
foreach (var element in namedElements)
{
// Generate a unique identifier for an element on a particular view
string uniqueElementId = string.Format("{0}.{1}", viewModelType.FullName, element.Name);

// Calculate the visibility of the element based on unique element id
bool elementVisible = ...

// Set the element's visibility
element.Visibility = elementVisible ? Visibility.Visible : Visibility.Collapsed;
}
};

... other configuration code
}
BindProperties公开 Func获取 View 上所有命名元素的集合,以及绑定(bind)到的 View 模型的类型。您可以使用此信息来唯一标识每个 View 控件,然后根据该唯一标识符计算数据的可见性。

请注意,设置 Visibility像这样的代码中的每个元素都会覆盖 Visibility 上存在的任何绑定(bind)。 XAML 中的属性。

关于.net - Caliburn.Micro 设置控件的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9442707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com