将XAML中的按钮可见性绑定到视图模型?

时间:2017-11-08 19:01:53

标签: c# xamarin mvvm xamarin.forms xamarin-studio

我希望该按钮在State.AwayState.Stop中可见,但由于某种原因,即使StateState.Away和{{不同,按钮也始终可见1}}。

的Xaml:

State.Stop

视图模型:

<Button Text="Hello" IsVisible="{Binding View}"/>

1 个答案:

答案 0 :(得分:2)

您可以从IValueConverterState

创建Visibility
public class StateToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, 
            System.Globalization.CultureInfo culture)
    {
        if (value is State)
        {
            State state = (State)value;
            switch (state)
            {
                case State.Away:
                case State.Gone:
                    return Visibility.Visible;
                default:
                    return Visibility.Collapsed;
            }
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, 
            System.Globalization.CultureInfo culture)
    {
        return State.None; // your default state
    }
}

然后将按钮绑定到转换器

<Window.Resources>
    <local:StateToVisibilityConverter x:Key="StateToVisibilityConverter"/>
</Window.Resources>

<Button Text="Hello" Visibility="{Binding Path=State, Converter={StaticResource StateToVisibilityConverter}}"/>