[英]Binding Failure of viewmodel and view
我正在制作自定义 [最小化、最大化、关闭] 按钮 (MVVM),我是这个主题的新手,我无法绑定,我已经重新检查了拼写,清理了解决方案,通过了调试模式,我不知道是什么问题是
这些按钮托管在一个布局中,该布局进一步托管在 MainWindow
Button XAML (SizePanelView.xaml)
________________________________________________________________________
<StackPanel Orientation="Horizontal">
<Label Content="{Binding jo}"/>
<Button Command="{Binding Minimize}" />
<Button Command="{Binding Maximize}" />
<Button Command="{Binding Close}"/>
</StackPanel>
Button Datacontext (SizePanelViewModel.cs)
________________________________________________________________________
public class SizePanelViewModel : ViewModelBase
{
public ICommand Minimize {get;}
public ICommand Maximize {get;}
public ICommand Close { get; }
private readonly Window window;
public string jo => "bakana";
public SizePanelViewModel(Window wwindow)
{
window = wwindow;
Minimize = new RelayCommand(() => window.WindowState = WindowState.Minimized);
Maximize = new RelayCommand(() => window.WindowState ^= WindowState.Maximized);
Close = new RelayCommand(() => window.Close());
}
}
(LayoutView.xaml)
________________________________________________________________________
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<local:NavBarView Grid.Column="0" DataContext="{Binding navDrawer}"/>
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<local:SizePanelView Grid.Column="1" DataContext="{Binding sPanel}"/>
</Grid>
<ContentControl Grid.Row="1" Content="{Binding Content}"/>
</Grid>
</Grid>
________________________________________________________________________
public class LayoutViewModel : ViewModelBase
{
public NavBarViewModel navDrawer { get; }
public ViewModelBase Content { get; }
public SizePanelViewModel sPanel { get; }
public LayoutViewModel(NavBarViewModel navDrawer, ViewModelBase content)
{
this.navDrawer = navDrawer;
this.Content = content;
}
public LayoutViewModel(SizePanelViewModel sPanel)
{
this.sPanel = sPanel;
}
}
APP.XAML
private SizePanelViewModel _sPanel;
protected override void OnStartup(StartupEventArgs e)
{
MainWindow = new MainWindow()
{
DataContext = new MainViewModel(),
};
MainWindow.Show();
_sPanel = new SizePanelViewModel(MainWindow);
new LayoutViewModel(_sPanel);
base.OnStartup(e);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.