我怎样才能使这个命令参数工作

本文关键字:命令 参数 工作 | 更新日期: 2023-09-27 17:56:43

这学期我一直在大学学习WPF,但仍然有一些事情我没有完全理解。我有以下代码:

<UserControl x:Class="Reversi.SquareControl"
         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" 
         mc:Ignorable="d" 
         d:DesignHeight="48" d:DesignWidth="48">
<Button Command="{Binding Place}" CommandParameter="{Binding ????????}">
    ...
</Button>

和:

    public partial class SquareControl : UserControl
{
    public SquareControl(int x, int y)
    {
        InitializeComponent();
        Coordinates = new Vector2D(x, y);
    }
    public Vector2D Coordinates
    {
        get { return (Vector2D) GetValue(CoordinateProperty); }
        set { SetValue(CoordinateProperty, value); }
    }
    ...
    public static readonly DependencyProperty CoordinateProperty =
        DependencyProperty.Register("Coordinates", typeof(Vector2D), typeof(SquareControl), new PropertyMetadata(new Vector2D(0, 0)));
}

我的问题是:我应该在CommandParameter绑定中放入什么才能将Coordinates传递给 ViewModel 中的 ICommand?

我怎样才能使这个命令参数工作

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mine="clr-namespace:WpfApplication2"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <mine:SquareControl Coordinates="{Binding VMCoordinates, Mode=TwoWay}"/>
    </Grid>
</Window>

在本例中,命名空间"mine"是应用的命名空间。因此,在主窗口中,网格内的行显示"在我的视图中放置一个SquareControl实例,并将其称为坐标的DP绑定到VM上名为VMCoordinates的属性"

"模式=双向"表示,如果视图(用户)或 VM 更改了数据,则将其传递给另一个。