簡體   English   中英

按鈕命令不執行 function

[英]Button Command not execute function

所以我創建了一個按鈕並將其鏈接到 ICommand NavigateToVM,但是當我嘗試單擊該按鈕時它沒有執行 function。 我是我做錯了什么。 我會發布相關的代碼。 提前致謝。 配置文件按鈕是我試圖開始工作的按鈕。 它只是一個標准的 Icommand。

{
    public class NavigationBarVM : BaseViewModel
    {
        public ICommand NavigateToVMCmd { get; set; }
        public NavigationBarVM()
        {

        }
        public NavigationBarVM( NavigationStore _navigationStore)
        {
            NavigateToVMCmd = new NavigateToProfileCommand(this, _navigationStore);
        }
    }
}
namespace WpfNotes.Commands
{
    public class NavigateToProfileCommand : CommandBase
    {
        private readonly NavigationBarVM navBarVM;
        private readonly NavigationStore _navigationStore;

        public NavigateToProfileCommand(NavigationBarVM VM, NavigationStore navigationStore)
        {
            navBarVM = VM;
            _navigationStore = navigationStore;
        }
        public override void Execute(object parameter)
        {
            _navigationStore.CurrentViewModel = new ProfileVM();
            Debug.WriteLine("Stuff");
        }
    }
}
<UserControl x:Class="WpfNotes.View.NavigationBar"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:WpfNotes.View"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800"
             xmlns:VM ="clr-namespace:WpfNotes.ViewModel">
    <UserControl.Resources>
        <VM:NavigationBarVM x:Key="vm"/>
    </UserControl.Resources>
    <Border BorderBrush="Black" BorderThickness="2">
        
    <UniformGrid Columns="4" Height="40">
         <Button BorderThickness="0" Content="Profile" Command="{Binding Source={StaticResource vm}, Path = NavigateToVMCmd }"></Button>
    </UniformGrid>
        
    </Border>
</UserControl>

您應該以編程方式實例化NavigationBarVM並使用NavigationStore注入它:

public partial class NavigationBar : UserControl
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new NavigationBarVM(new NavigationStore());
    }
}

然后你可以直接綁定到視圖 model 的命令:

<Button BorderThickness="0" Content="Profile"
        Command="{Binding NavigateToVMCmd}" />

以下使用默認構造函數初始化NavigationBarVM ,該構造函數非常無用,在您的情況下應將其刪除,因為它不會初始化命令:

<VM:NavigationBarVM x:Key="vm"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM