В настоящее время у меня есть простой класс, который содержит различные формы данных, для целей этого вопроса я назову его MyData
.Класс обычно создается в xaml в разделе ресурсов контейнера.В настоящее время он имеет DependencyProperty
с именем Show
, который указывает, должны ли его данные отображаться в пользовательском интерфейсе.Обычно этот ресурс используется для создания шаблона TextBlock
для отображения данных и связывания Show
с Visibility
с помощью конвертера.Само значение Show
обычно берется из другого DependencyProperty
(обычно в ViewModel для реализаций MVVM).У меня есть пример, показанный ниже.
<navigation:Page.Resources>
<ViewModel x:Name="MyModel"/>
<MyData Data="Some Sample Data" Show="{Binding ModelValue, ElementName=MyModel}"/>
<DataTemplate>
<TextBlock Text={Binding Data} Visibility="{Binding Show, Converter={StaticResource BoolToVisibilityConverter}}"/>
</DataTemplate>
</navigation:Page.Resources>
Сценарий выше, очевидно, является упрощенной версией того, над чем я сейчас работаю, но в настоящее время он работает отлично.Однако мне нужно разрешить нескольким привязкам влиять на видимость данных.Чтобы уточнить, если и только если все значения верны, данные должны быть показаны.Итак, MyData xaml сверху выглядел бы так:
<MyData Data="Some Sample Data">
<MyData.Show>
<AnotherClass Value="{Binding ModelValue1, ElementName=MyModel}"/>
<AnotherClass Value="{Binding ModelValue2, ElementName=MyModel}"/>
</MyData.Show>
</MyData>
Моей первой мыслью было сделать Show
ObservableCollection<bool>
, но он не отслеживает изменения значений своих элементов., только если сами предметы меняются.Когда «ModelValue1», например, изменится с true на false, событие CollectionChanged
коллекции не будет вызвано.Итак, мне нужен способ использовать несколько привязок для определения видимости чего-либо.
Я понимаю, что это довольно длинный вопрос, но он довольно сложный, поэтому я старался быть настолько подробным, насколько это необходимо.Пожалуйста, не стесняйтесь просить меня уточнить что-либо.