Доступ к элементу WPF изнутри классаC#

Место общения программистов C#
Ответить
Anonymous
 Доступ к элементу WPF изнутри класса

Сообщение Anonymous »

Может ли кто-нибудь подсказать мне, почему я не могу получить доступ к элементу WPF через его имя изнутри класса (который является частью MainWindow)? Я не понимаю, почему это невозможно через имя, как это возможно для функции Click кнопки MainWindow.
Пример и проблема: StackPanel (StackPanel1) в средстве просмотра прокрутки содержит списки ListBoxes. Две кнопки добавляют списки в эту StackPanel, используя два разных подхода. Первая кнопка напрямую обращается к StackPanel1 и добавляет дочерние элементы, вторая кнопка использует класс (MyClass). Я не могу получить доступ к StackPanel через ее имя внутри этого класса, как это возможно для функции щелчка. Почему?
xaml:

















cs:
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

class MyClass
{
public void AddNewListBoxes(StackPanel sp)
{
ListBox lb = new ListBox();
lb.Width = 120;
lb.Height = 150;
lb.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
sp.Children.Add(lb);
// StackPanel1.Children.Add(lb); // does not work! Why?
}
}

private void Add_Elements_Directly_Click(object sender, RoutedEventArgs e)
{
ListBox lb = new ListBox();
lb.Width = 120;
lb.Height = 150;
lb.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
StackPanel1.Children.Add(lb);
}

private void Add_Elements_ViaClass_Click(object sender, RoutedEventArgs e)
{
MyClass myClass = new MyClass();
StackPanel sp = StackPanel1; // StackPanel1 from xaml
myClass.AddNewListBoxes(sp);

}
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... de-a-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»