Lỗi namespace trong wpf

Em mới học về XAML, hiện tại đang học đến Command, đến đây em sử dụng một đoạn code trên mạng để tìm hiểu, thì em gặp được lỗi này:

*Và đây là code của em: *

XAML :

<Window x:Class="WPF_Knowledge.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WPF_Knowledge"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
<Window.CommandBindings>
    <CommandBinding Command="local:CustomCommand.Exit" 
                    CanExecute="CustomCommand1_CanExecute" 
                    Executed="CustomCommand1_Executed" />
</Window.CommandBindings>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Menu>
        <MenuItem Header="File">
            <MenuItem Command="local:CustomCommand.Exit" />
        </MenuItem>
    </Menu>
    <StackPanel Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center">
        <Button Command="local:CustomCommand.Exit">Exit</Button>
    </StackPanel>
</Grid>

Code-Behind :

 public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void CustomCommand1_CanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = true; 
    }

    private void CustomCommand1_Executed(object sender, ExecutedRoutedEventArgs e)
    {
        Application.Current.Shutdown();
    }

}
public static class CustomCommand
{
    public static readonly RoutedUICommand Exit = new RoutedUICommand
        (
            "Exit",
            "Exit",
            typeof(CustomCommand),
            new InputGestureCollection()
            { new KeyGesture(Key.F4,ModifierKeys.Alt)}
        );
}

Em là người mới, mong mọi người có thể giúp đỡ ạ!!

Lớp … không tồn tại trong namespace …

Bạn cần kiểm tra xem trong cái namespace WPF_Knowlegle có cái lớp nào tên là CustomCommand hay không.
Lớp này phải public và không static.

5 Likes

Ko phải r ạ, mk đã thử chỉnh sửa các lớp nhưng vẫn lỗi

public static class CustomCommand

bạn check lại xem đã cho cái này vào namespace WPF_Knowledge chưa?

5 Likes

Ít nhất là cái code hiện tại thì lớp CútomCommand đang static.
Kèm theo đó trong cái CustomCommand có cái Exit nhưng nó đang static và không phải property.

4 Likes

Kiểm tra làm s bạn nhỉ ??

Mình cũng đã thử đổi trường nhưng nó vẫn vậy, huhu :cry::cry:

Bạn đổi như thế nào ?

Mình xóa static đi bạn

Exit đang không là property,

1 Like

Thực sự xin lỗi vì bản thân mình là người mới nên cũng không hiểu rõ được vấn đề này, dưới đây là link của code mình đã chép, bạn xem giúp mình với ạ :
https://www.wpf-tutorial.com/commands/implementing-custom-commands/

Trong link của cậu “chép” có dòng này:

xmlns:self="clr-namespace:WpfTutorialSamples.Commands"

Đó là namespace cậu cần để class của cậu trong đó.

Ở bên dưới, họ có class này:

using //...

// namespace được khai báo trong file xaml
namespace WpfTutorialSamples.Commands
{
	public partial class CustomCommandSample : Window
	// ...
	public static class CustomCommands
	// ...
}

Cậu làm tương tự với class của cậu là được. Vì cậu không copy tên namespace ở code của cậu, bọn tớ không biết thực sự cậu đã làm đúng hay chưa (khả năng cao là chưa, vì thông báo lỗi của cậu nói không tìm thấy class trong namespace).

Hope it helps!

6 Likes

Từ code ban đầu.
Chỉ cần di chuyển lớp CustomCommand vào trong namespace có tên WPF_Knowlegde là được.

5 Likes

Xin lỗi vì mình rep hơi bị chậm một chút!! nhưng cũng cảm ơn bạn nhiều vì đã giúp và mình thực sự sai ở lỗi đó :blush::blush:

1 Like

Mình chỉ cần đổi mỗi self là được, cảm ơn bạn vì đã giúp đỡ mình ạ !!:blush::blush:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?