我被一个(我认为)简单的实现所迷惑;根据对视图模型的绑定,使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;
}
ViewModel:
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}">
但这会导致完全相同的问题;该视图对更改后的属性没有反应。
非常感谢您的帮助
答案 0 :(得分:2)
为了...的爱
问题是绑定的默认模式是onetime
。花一个疯狂的时间来解决这个问题。当我按如下方式声明绑定时,它将按预期工作...
Visibility="{x:Bind (Visibility) ViewModel.ShowNavigationButtons, Mode=OneWay}">
我希望这有一天能帮助别人拔头发...