Доступ к внешнему объекту из обработчика событий - PullRequest
0 голосов
/ 15 июня 2019

Может кто-нибудь сказать мне, как я могу получить доступ к внешнему объекту из обработчика событий?

Код ниже предоставляет пример того, что я пытаюсь сделать. Ссылки на externalClass в обработчике события генерируют следующее сообщение об ошибке «Имя externalClass не существует в текущем контексте».

Я установил Тип вывода сборки на Консольное приложение, чтобы оно печаталось на консоли.

Может кто-нибудь сказать мне, как лучше всего получить доступ к объекту externalClass из обработчика событий? Код ниже: XAML

<Window x:Class="AccessObjectFromEventHandler.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:AccessObjectFromEventHandler"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="10" />
        <RowDefinition Height="auto" />
        <RowDefinition Height="30" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="10" />
    </Grid.RowDefinitions>

    <Grid Grid.Row="1" ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="20" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="auto" />
            <ColumnDefinition Width="20" />
        </Grid.ColumnDefinitions>
        <Button Grid.Row="1" Grid.Column="2"  Width="100" Height=" 30" Content="Click to Fire Event" Click="Button_Click"/>
    </Grid>
</Grid>

C #

using System;
using System.Windows;
namespace AccessObjectFromEventHandler
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            ExternalClass externalClass = new ExternalClass();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Console.WriteLine($"Button Click Event Fired.");
            externalClass.Name = "Some Name";
            externalClass.ExternalClassMethod();
        }
    }
    public partial class ExternalClass
    {
        public string Name { get; set; }
        //  The access modifier is "public" to enable access from external types.
        public void ExternalClassMethod()
        {
            Console.WriteLine($"ExternalClassMethod executed.  Name = {Name}");
        }
     }
}

1 Ответ

1 голос
/ 15 июня 2019

Попробуйте это:

using System;
using System.Windows;
namespace AccessObjectFromEventHandler
{
    public partial class MainWindow : Window
    {

        ExternalClass externalClass;

        public MainWindow()
        {
            InitializeComponent();
            externalClass = new ExternalClass();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Console.WriteLine($"Button Click Event Fired.");
            externalClass.Name = "Some Name";
            externalClass.ExternalClassMethod();
        }
    }
    public partial class ExternalClass
    {
        public string Name { get; set; }
        //  The access modifier is "public" to enable access from external types.
        public void ExternalClassMethod()
        {
            Console.WriteLine($"ExternalClassMethod executed.  Name = {Name}");
        }
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...