Вы должны реализовать INotifyPropertyChanged
в SettingsService
классе. и RaisePropertyChanged();
(Это необходимо для Binding или вы можете использовать Dependency Property вместо.)
Как это: В SettingsService
классе
public class SettingsService : INotifyPropertyChanged
{
public static SettingsService Instance { get; } = new SettingsService();
bool _IsFullScreen;
public event EventHandler IsFullScreenChanged;
public bool IsFullScreen
{
get { return _IsFullScreen; }
set
{
if (_IsFullScreen != value)
{
_IsFullScreen = value;
//
RaisePropertyChanged(); //uses CallerMemberName
IsFullScreenChanged?.Invoke(this, EventArgs.Empty);
}
}
}
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged([CallerMemberName] string propertyName = null) =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
#endregion
}
И в MyViewModel
классе просто добавить свойство Settings
.
public class MyViewModel : ViewModelBase
{
public SettingsService Settings => SettingsService.Instance;
//
}
И в файле XAML: В Binding
пути написать путь свойства, как Settings.IsFullScreen
(я использовал ValueWhenConverter для преобразования из BOOL в Visibility)
<Page
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:converter="using:Template10.Converters"
mc:Ignorable="d">
<Page.DataContext>
<vm:MyViewModel x:Name="MyViewModel " />
</Page.DataContext>
<Page.Resources>
<converter:ValueWhenConverter x:Key="VisibleWhenTrueConverter">
<converter:ValueWhenConverter.When>
<x:Boolean>True</x:Boolean>
</converter:ValueWhenConverter.When>
<converter:ValueWhenConverter.Value>
<Visibility>Visible</Visibility>
</converter:ValueWhenConverter.Value>
<converter:ValueWhenConverter.Otherwise>
<Visibility>Collapsed</Visibility>
</converter:ValueWhenConverter.Otherwise>
</converter:ValueWhenConverter>
<converter:ValueWhenConverter x:Key="VisibleWhenFalseConverter">
<converter:ValueWhenConverter.When>
<x:Boolean>False</x:Boolean>
</converter:ValueWhenConverter.When>
<converter:ValueWhenConverter.Value>
<Visibility>Visible</Visibility>
</converter:ValueWhenConverter.Value>
<converter:ValueWhenConverter.Otherwise>
<Visibility>Collapsed</Visibility>
</converter:ValueWhenConverter.Otherwise>
</converter:ValueWhenConverter>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<UserControl Visibility="{Binding Settings.IsFullScreen, Converter={StaticResource VisibleWhenFalseConverter}}">
</UserControl>
</Grid>
Пожалуйста, объясните, как это работает и почему это решить вопрос ОП. – Arashsoft