Предполагается, что свойства Picker1
, Picker2
и Picker3
выбраны и не выбраны, как ожидалось; например, Label1
ниже не будет отображаться, если выбраны оба Picker1
и Picker2
:
Используйте свойство Label
IsVisible
, определите IMultiValueConverter
и используйте это с помощью MultiBinding
:
<ContentPage
...
xmlns:converters="clr-namespace:Converters">
<ContentPage.Resources>
<converters:AllTrueMultiConverter x:Key="AllTrueMultiConverter"/>
<converters:IsSelectedConverter x:Key="IsSelectedConverter"/>
<converters:NotSelectedConverter x:Key="NotSelectedConverter"/>
</ContentPage.Resources>
<ContentPage.Content>
...
<Label Text="Label1 MultiBinding">
<Label.IsVisible>
<MultiBinding Converter="{StaticResource AllTrueMultiConverter}">
<Binding Path="Picker1" Converter="{StaticResource IsSelectedConverter}" />
<Binding Path="Picker2" Converter="{StaticResource NotSelectedConverter}" />
<Binding Path="Picker3" Converter="{StaticResource NotSelectedConverter}" />
</MultiBinding>
</Label.IsVisible>
</Label>
Для AllTrueMultiConverter
см. Определите IMultiValueConverter
Пример IsSelectedConverter
и NotSelectedConverter
:
namespace Converters
{
public class IsSelectedConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (value != null);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
...
public class NotSelectedConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (value == null);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
}
Если Label1
должно быть видно только в зависимости от Picker1
, можно использовать Binding
:
<Label Text="Label1 Binding" IsVisible="{Binding Picker1, Converter={StaticResource IsSelectedConverter}}"/>