【问题标题】:UWP Visibility binding not working (mvvmlight)UWP 可见性绑定不起作用(mvvmlight)
【发布时间】:2019-01-24 22:06:26
【问题描述】:

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

XAML:

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

后面的代码:

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

        DataContext = new MainViewModel();
    }

    public MainViewModel ViewModel => DataContext as MainViewModel;
}

视图模型:

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();
        });
     }
}

我也尝试过绑定“WPF方式”:

Visibility="{Binding ShowNavigationButtons, Converter{StaticResource BoolToVisibilityConverter}">

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

非常感谢您的帮助,

【问题讨论】:

  • 资源BoolToVisibilityConverter声明了吗?
  • 是的。但是使用 x:bind 语法是不必要的

标签: c# uwp viewmodel mvvm-light visibility


【解决方案1】:

为了爱……

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

Visibility="{x:Bind (Visibility) ViewModel.ShowNavigationButtons, Mode=OneWay}">

我希望有一天这可以帮助其他正在拔头发的人......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 2017-04-19
    • 2014-09-05
    • 2018-03-15
    相关资源
    最近更新 更多