Как правильно передать некоторые пользовательские параметры обработчикам событий в WPF? - PullRequest
0 голосов
/ 03 декабря 2009

Каким может быть правильный способ присвоения параметров объектам в окне WPF (объекты, такие как прямоугольники) и передачи их обработчикам событий по щелчкам мыши?

Спасибо.

1 Ответ

1 голос
/ 03 декабря 2009

Вот один из способов:

Поместите это в окно:

public static readonly RoutedUICommand clickCommand = new RoutedUICommand("TheCommand", "TheCommand", typeof(Window1));

void ClickRectangle(object sender, ExecutedRoutedEventArgs e)
{
    if (e.Parameter == null)
        return;
    MessageBox.Show("parameter = " + e.Parameter.ToString());
}

Тогда в XAML:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:my="clr-namespace:WpfApplication1"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <Rectangle Margin="50" Fill="Blue">
            <Rectangle.CommandBindings>
                <CommandBinding
                    Command="my:Window1.clickCommand" Executed="ClickRectangle" />
            </Rectangle.CommandBindings>
            <Rectangle.InputBindings>
                <MouseBinding MouseAction="LeftClick"
                              Command="my:Window1.clickCommand" CommandParameter="123" />
            </Rectangle.InputBindings>
        </Rectangle>
    </Grid>
</Window>
...