Как связать видимость метки через метод - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть несколько меток. Мне нужно несколько раз установить видимость true или false. В этом случае мой код дублирует, как преодолеть это с помощью mvvm

                userlabel.IsVisible = false;
                passwordlabel.IsVisible = false;
                userlabel1.IsVisible = true;
                passwordlabel1.IsVisible = true;

, в моем коде этот код строки повторяет нескольковремя.мне нужно положить это в метод в моем представлении модель CS

1 Ответ

0 голосов
/ 18 февраля 2019

Я думаю, вы можете установить значение ваших свойств в вашем классе ViewModel и привязать их к вашему представлению.В этом примере для ясности я использую Base ViewModel, которая вызовет событие NotifyPropertyChanged.

 public class MainViewModel : ViewModelBase
    {

        private bool _isUserLabelVisible = false;

        public bool IsUserLabelVisible
        {
            get
            {
                return _isUserLabelVisible;
            }

            set
            {
                Set(ref _isUserLabelVisible, value);
            }
        }


        private bool _isPasswordVisible = true;

        public bool IsPasswordLabelVisible
        {
            get
            {
                return _isPasswordVisible;
            }

            set
            {
                Set(ref _isPasswordVisible, value);
            }
        }

        private void DisableAll()
        {
            IsPasswordLabelVisible = false;
            IsUserLabelVisible = false;
        }

        private void EnableAll()
        {
            IsUserLabelVisible = true;
            IsPasswordLabelVisible = true;
        }
    }

Таким образом, вы можете создать свои методы, и представление будет обновлено.По вашему мнению вам нужно будет использовать BooleanToVisibilityConverter.

<Window x:Class="StackOverflow54741515.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:ignore="http://www.galasoft.ch/ignore"
        mc:Ignorable="d ignore"
        Height="300"
        Width="300"
        Title="MVVM Light Application"
        DataContext="{Binding Main, Source={StaticResource Locator}}">

    <Window.Resources>
        <BooleanToVisibilityConverter x:Key="BoolToVis"/>
    </Window.Resources>

    <Grid x:Name="LayoutRoot">
        <TextBlock Name="userLabel" FontSize="36"
                   FontWeight="Bold"
                   Foreground="Purple"
                   Text="Username"
                   VerticalAlignment="Center"
                   HorizontalAlignment="Center"
                   TextWrapping="Wrap"
                   Visibility="{Binding IsUserLabelVisible, Converter={StaticResource BoolToVis}}"/>

        <TextBlock Name="passwordLabel" FontSize="36"
                   FontWeight="Bold"
                   Foreground="Purple"
                   Text="Password"
                   VerticalAlignment="Center"
                   HorizontalAlignment="Center"
                   TextWrapping="Wrap"
                   Visibility="{Binding IsPasswordLabelVisible, Converter={StaticResource BoolToVis}}"/>

    </Grid>
</Window>

Надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...