From 7a0596fa7a18d85f4aed41381124da6b2a5c0377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Plesz=20G=C3=A1bor?= Date: Fri, 28 Dec 2018 18:22:04 +0100 Subject: [PATCH] =?UTF-8?q?#3=20#11:=20N=C3=A9h=C3=A1ny=20apr=C3=B3bb=20ja?= =?UTF-8?q?v=C3=ADt=C3=A1s,=20ha=20nem=20valid=20a=20k=C3=A9perny=C5=91=20?= =?UTF-8?q?akkor=20jelezz=C3=BCk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Converters/BoolToVisibilityConverter.cs | 39 ++++++++++++++++++ pg.DarkSky.Wpf/MainWindow.xaml | 21 +++++++--- pg.DarkSky.Wpf/MainWindow.xaml.cs | 5 --- pg.DarkSky.Wpf/ViewModels/MainViewModel.cs | 40 ++++++++++++++++++- pg.DarkSky.Wpf/pg.DarkSky.Wpf.csproj | 1 + 5 files changed, 95 insertions(+), 11 deletions(-) create mode 100644 pg.DarkSky.Wpf/Converters/BoolToVisibilityConverter.cs diff --git a/pg.DarkSky.Wpf/Converters/BoolToVisibilityConverter.cs b/pg.DarkSky.Wpf/Converters/BoolToVisibilityConverter.cs new file mode 100644 index 0000000..4ad54e1 --- /dev/null +++ b/pg.DarkSky.Wpf/Converters/BoolToVisibilityConverter.cs @@ -0,0 +1,39 @@ +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace pg.DarkSky.Wpf.Converters +{ + [ValueConversion(typeof(bool), typeof(Visibility))] + public sealed class BoolToVisibilityConverter : IValueConverter + { + public Visibility TrueValue { get; set; } + public Visibility FalseValue { get; set; } + + public BoolToVisibilityConverter() + { + // set defaults + TrueValue = Visibility.Visible; + FalseValue = Visibility.Collapsed; + } + + public object Convert(object value, Type targetType, + object parameter, CultureInfo culture) + { + if (!(value is bool)) + return null; + return (bool)value ? TrueValue : FalseValue; + } + + public object ConvertBack(object value, Type targetType, + object parameter, CultureInfo culture) + { + if (Equals(value, TrueValue)) + return true; + if (Equals(value, FalseValue)) + return false; + return null; + } + } +} diff --git a/pg.DarkSky.Wpf/MainWindow.xaml b/pg.DarkSky.Wpf/MainWindow.xaml index 2c405f3..8ee40f8 100644 --- a/pg.DarkSky.Wpf/MainWindow.xaml +++ b/pg.DarkSky.Wpf/MainWindow.xaml @@ -7,13 +7,18 @@ xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks" xmlns:vm="clr-namespace:pg.DarkSky.Wpf.ViewModels" - xmlns:helpers="clr-namespace:pg.DarkSky.Wpf.Helpers" + xmlns:helpers="clr-namespace:pg.DarkSky.Wpf.Helpers" + xmlns:converters="clr-namespace:pg.DarkSky.Wpf.Converters" mc:Ignorable="d" DataContext="{x:Static vm:ViewModelLocator.MainViewModel }" MinHeight="450" MinWidth="650" Title="pg.DarkSky" Height="450" Width="800"> - + + @@ -40,11 +45,17 @@ DisplayMemberPath="Name" SelectedValuePath="Code" SelectedItem="{Binding SelectedLanguage}" - ToolTip="{DynamicResource MainWindow.SelectableLanguage}" SelectionChanged="CboSelectableLanguage_SelectionChanged"/> + ToolTip="{DynamicResource MainWindow.SelectableLanguage}"/> + /// Jelzi, hogy a képernyőn lévő adatok rendben vannak-e? + /// vagyis a lenyílók és a megjelenített adatok egymáshoz tartoznak-e. Ha nem, akkor + /// false, ha igen, akkor true + /// + public bool IsValid + { + get { return _isValid; } + set + { + SetProperty(value, ref _isValid); + OnPropertyChanged(nameof(IsNotValid)); + } + } + + //Ez pedig a negáltja az egyszerűbb használathoz + public bool IsNotValid + { + get { return !IsValid; } + set { } + } + public bool IsWorking { get @@ -113,6 +137,8 @@ public Language SelectedLanguage if (SetProperty(value, ref _selectedLanguage)) { OnSelectedLanguageChanged(SelectedLanguage); + //jelezzük, hogy a képernyőn lévő adatok mér nem ehhez a lenyíló értékhez tartoznak + IsValid = false; } } } @@ -169,7 +195,18 @@ private void OnSelectedLanguageChanged(Language selectedLanguage) #region City Datasource to combobox private City _selectedCity; - public City SelectedCity { get { return _selectedCity; } set { SetProperty(value, ref _selectedCity); } } + public City SelectedCity + { + get { return _selectedCity; } + set + { + if (SetProperty(value, ref _selectedCity)) + { + //jelezzük, hogy a képernyőn lévő adatok mér nem ehhez a lenyíló értékhez tartoznak + IsValid = false; + } + } + } private ObservableCollection _selectableCity; public ObservableCollection SelectableCity { get { return _selectableCity; } set { SetProperty(value, ref _selectableCity); } } @@ -223,6 +260,7 @@ private async Task RefreshData() finally { IsBusy = false; + IsValid = true; CommandManager.InvalidateRequerySuggested(); } } diff --git a/pg.DarkSky.Wpf/pg.DarkSky.Wpf.csproj b/pg.DarkSky.Wpf/pg.DarkSky.Wpf.csproj index 879f1fd..e1d941d 100644 --- a/pg.DarkSky.Wpf/pg.DarkSky.Wpf.csproj +++ b/pg.DarkSky.Wpf/pg.DarkSky.Wpf.csproj @@ -55,6 +55,7 @@ MSBuild:Compile Designer +