Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2023, 17:08   #1
zw2auP&#j29!
Пользователь
 
Регистрация: 30.04.2020
Сообщений: 19
По умолчанию wpf. как привязать обработчик к меню из шаблона

MainMenuTemplate.xaml:
Код:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    >
   <DataTemplate x:Key="MainMenuTemplate" x:Shared="True">
      <Menu x:Name="MainMenu">
         <MenuItem x:Name="OpenMenuItem" 
???              Click="ShowFilePicker_OnClick" 
                   Header="Open file"
                   InputGestureText="Ctrl+O"
                   />
      </Menu>
   </DataTemplate>
</ResourceDictionary>
MainWindow.xaml:
Код:
<Window x:Class="WpfOpenDialogExample.OpenFileDialogSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="OpenFileDialogSample" Height="300" Width="300">
   <Window.DataContext>
      <ViewModel />
   </Window.DataContext>
   
   <Window.Resources>
      <ResourceDictionary>
         <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/WpfOpenDialogExample;component//MainMenuTemplate.xaml"/>
         </ResourceDictionary.MergedDictionaries>
      </ResourceDictionary>
   </Window.Resources>
   <Grid>
      <ContentControl Content="{Binding}" ContentTemplate ="{StaticResource MainMenuTemplate}" />
   </Grid>
</Window>
MainWindow.xaml.cs:
Код:
namespace WpfOpenDialogExample
{
   public partial class OpenFileDialogSample : Window
   {
      public OpenFileDialogSample()
      {
         InitializeComponent();
???      OpenMenuItem.Click += ShowFilePicker_OnClick;
      }

      private void ShowFilePicker_OnClick(object sender, RoutedEventArgs e)
      {
         var viewModel = this.DataContext as ViewModel;
         OpenFileDialog openFileDialog = new OpenFileDialog();
         if (openFileDialog.ShowDialog() == true && viewModel.OpenFileCommand.CanExecute(openFileDialog.FileName))
         {
            viewModel.OpenFileCommand.Execute(openFileDialog.FileName);
         }
      }
   }
}
Или единственный способ, отказаться от словаря и перенести меню в представление?
zw2auP&#j29! вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
редактировать меню шаблона Jimdo alinaxz HTML и CSS 0 19.12.2013 13:58
как Привязать скрипт обработчик в контролу Dan_banan ASP.NET 13 19.10.2012 00:15
[joomla] редактирование шаблона. Пункт всплывающего меню. Casper-SC WordPress и другие CMS 3 02.07.2010 00:00
Создание своего шаблона для joomla и вставка меню Malenovna WordPress и другие CMS 1 14.06.2010 13:15