0

私は今学期、大学で 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)));
}

私の質問は、ViewModel の ICommand にCommandParameter渡すバインディングに何を入れるのですか?Coordinates

4

1 に答える 1

2
<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 のインスタンスをビューに配置し、Coordinates と呼ばれる DP を VMCoordinates と呼ばれる VM のプロパティにバインドする」と表示されます。

「Mode=TwoWay」は、ビュー (ユーザー) または VM のいずれかがデータを変更した場合に、それを他方に渡すことを意味します。

于 2015-06-17T00:02:33.213 に答える