繁体   English   中英

viewmodel和view绑定失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM