воскресенье, 5 августа 2012 г.

XAML: переходим между страницами по клику без code-behind

Итак, мы пишем .NET WPF приложение. В моем случае: Silverlight приложение для WindowsPhone. Представим ситуацию: по нажатию на одну кнопку нужно перейти на другую страницу приложения.
<Button x:Name="ToPageButton" Text="Move to other page!" />

Что делается в первую очередь? Правильно, на кнопку вешается event, а далее в code-behind пишется код перехода на новую страницу.

XAML:
<Button x:Name="ToPageButton" Text="Go!" Click="Button_Click" />
Code-behind:
private void Button_Click(object sender, RoutedEventArgs e)
{
    NavigationService.Navigate(new Uri("/SomePage.xaml", UriKind.Relative));
}

Как все это сделать проще и в одном месте (в XAML-коде)?
Для начала подключаем к проекту сборки:

  • System.Windows.Interactivity 
  • Microsoft.Expression.Interactivity

Затем в определение namespace'ов нашей XAML-странички добавляем 2 ссылки:
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"
А теперь осталось написать переход на другую страничку чистым XAML :)

<Button Text="Go!">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <ic:NavigateToPageAction TargetPage="/SomePage.xaml" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>
Теперь не нужно делать много однотипных code-behind операций и жить станет несколько проще :)

Комментариев нет:

Отправить комментарий