【发布时间】: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