Можно ли запустить другое представление, используя XAML, только при нажатии кнопки?

2

Я знаю, что привязка в WPF - действительно мощная функция, но я не знаю, возможно ли это.

Мое окно состоит из действительно простой сетки:

<Grid Height="593" Width="800" >
    <Grid.RowDefinitions>
        <RowDefinition Height="109*" />
        <RowDefinition Height="484*" />
    </Grid.RowDefinitions>
    <Grid.Background>
        <ImageBrush ImageSource="MenuBackground.png" />
    </Grid.Background>

    <Label Grid.Row="0" 
           HorizontalAlignment="Center" VerticalAlignment="Center" 
           FontSize="36" Foreground="Gray"
           Margin="0,15,0,0">
        Bindings Sandbox
    </Label>

    <Grid Grid.Row="1" Width="300" Height="200">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>

        <Button Grid.Row="0" Margin="5" FontSize="16">Slider and Progress Bar</Button>
        <Button Grid.Row="1" Margin="5" FontSize="16">Button2</Button>
    </Grid>
</Grid>

Я хочу знать, можно ли вызвать другое окно (допустим, определенное в View1.xaml) без маршрутизации Button.Click incode-behind?

  • 0
    что вы хотите сделать с / с View1? открыть его в новом окне? или это пользовательский контроль в главном окне приложения
  • 0
    Открыть в новом окне.
Теги:
xaml
wpf
binding

1 ответ

1
Лучший ответ

Здесь у вас есть несколько вариантов.

Технически вы можете сделать прикрепленное свойство, которое делает то, что вы хотите. Это будет использовать код, но не в коде, поэтому он предоставляет более многоразовый вариант.

В качестве альтернативы вместо обработчика событий вы можете использовать Command. Это позволяет вам привязываться к команде и перемещать логику в ваш DataContext. (Это, кстати, является одним из "инструментов", которые делают шаблон MVVM корректным.) Команда может открыть ваш новый вид.

  • 1
    Мне больше нравится опция Command. Спасибо что подметил это.
  • 0
    Это тоже мое личное предпочтение - но это два варианта, которые я использовал.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню