Да, используйте привязку.В XAML установите свойство Visibility
для привязки к общедоступному свойству в модели представления и используйте стандарт BooleanToVisibilityConverter
, чтобы преобразовать открытое свойство вашей логической модели представления в действительное значение Visibility
.
ЕслиВы хотите создать общее решение, позволяющее настраивать видимость любого элемента представления, а затем один из вариантов - подключиться к процессу привязки Caliburn.Micro.Например, вы можете добавить еще один элемент в список вызовов ViewModelBinder.BindProperties
.
Я не проверял это, но здесь это делается в методе Configure
вашего загрузчика:
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
public Func
получает коллекцию всехименованных элементов в вашем представлении, а также тип модели представления, к которой привязан.Вы можете использовать эту информацию для уникальной идентификации каждого элемента управления представлением, а затем рассчитать видимость на основе ваших данных на основе этого уникального идентификатора.
Обратите внимание, что установка Visibility
каждого элемента в коде, подобного этому, переопределит любые привязкикоторые присутствуют в свойстве Visibility
в XAML.