UWP 可见性绑定不起作用 (mvvmlight)

bas*_*bas 2 c# visibility viewmodel mvvm-light uwp

我对一个(我认为)简单的实现感到困惑;根据与视图模型的绑定使 UI 元素可见。我使用 mvvmlight 框架。当绑定(布尔值)设置为true可见性时,绑定不会对更改做出反应。

XAML:

<Button 
    Command="{Binding NavigationCommand}" CommandParameter="{StaticResource Back}"
    Visibility="{x:Bind (Visibility) ViewModel.ShowNavigationButtons}">
    <Image Source="../../../Resources/NavigateBack.PNG"/>
</Button>
Run Code Online (Sandbox Code Playgroud)

后面的代码:

public sealed partial class MainPage
{
    public MainPage()
    {
        InitializeComponent();

        DataContext = new MainViewModel();
    }

    public MainViewModel ViewModel => DataContext as MainViewModel;
}
Run Code Online (Sandbox Code Playgroud)

视图模型:

public class MainViewModel : ViewModelBase
{
    private bool _showNavigationButtons;
    public RelayCommand BrakingCommand { get; }

    public bool ShowNavigationButtons
    {
        get => _showNavigationButtons;
        set { Set(() => ShowNavigationButtons, ref _showNavigationButtons, value); }
    }

    public MainViewModel()
    {
        BrakingCommand = new RelayCommand(() =>
        {
            ShowNavigationButtons = true;
            NavigationCommand.RaiseCanExecuteChanged();
        });
     }
}
Run Code Online (Sandbox Code Playgroud)

我还尝试绑定“WPF方式”:

Visibility="{Binding ShowNavigationButtons, Converter{StaticResource BoolToVisibilityConverter}">
Run Code Online (Sandbox Code Playgroud)

但这会导致完全相同的问题;视图不会对更改的属性做出反应。

非常感谢帮助,

bas*_*bas 5

为了……的爱

问题是绑定的默认模式是onetime. 花一个小时来弄清楚。当我如下声明绑定时,它按预期工作......

Visibility="{x:Bind (Visibility) ViewModel.ShowNavigationButtons, Mode=OneWay}">
Run Code Online (Sandbox Code Playgroud)

我希望这能帮助有一天正在拔头发的人......