Укажите DataContext в коде - PullRequest
       14

Укажите DataContext в коде

1 голос
/ 24 октября 2011

У меня есть простое представление, которое я хочу привязать к моей модели представления.В настоящее время я использую формат Source = для привязки данных, но хотел бы преобразовать его в указание DataContext в коде.

Это то, что у меня есть, и оно работает ...

XAML:

   <Window.Resources>
        <local:ViewModel x:Key="ViewModel" />
    </Window.Resources>

    <Button Content="Click">
        <local:EventToCommand.Collection>
            <local:EventToCommandCollection>
                <local:EventToCommand Event="Click" Command="{Binding Source={StaticResource ViewModel}, Path=ClickCommand, diag:PresentationTraceSources.TraceLevel=High}" />
                <local:EventToCommand Event="GotFocus" Command="{Binding Source={StaticResource ViewModel}, Path=GotFocusCommand}" />
            </local:EventToCommandCollection>
        </local:EventToCommand.Collection>
    </Button>
</Window>

Код модели представления:

public class ViewModel
{
    public Command ClickCommand { get; set; }
    public Command GotFocusCommand { get; set; }

    public ViewModel()
    {
        ClickCommand = new Command((obj) => { Execute(obj); return null; });
        GotFocusCommand = new Command((obj) => { Execute(obj); return null; });
    }

    void Execute(object param)
    {
        if (param != null)
            System.Windows.MessageBox.Show(param.ToString());
        else
            System.Windows.MessageBox.Show("Execute");
    }
}

Теперь все, что яЯ хочу сделать это в коде моего окна:

public MainWindow()
{
    InitializeComponent();

    DataContext = new ViewModel();
}

и удалить раздел Window.Resources в XAML, но я не могу понять, как мне следует соответствующим образом изменить строки Binding.

1 Ответ

2 голосов
/ 24 октября 2011

DataContext является значением по умолчанию Source, поэтому это должно работать:

<local:EventToCommand Event="GotFocus" Command="{Binding GotFocusCommand}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...