powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Передача в XAML в качестве параметра сложной структуры с выражением привязки
4 сообщений из 4, страница 1 из 1
Передача в XAML в качестве параметра сложной структуры с выражением привязки
    #36819993
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо реализовать в XAML передачу команде в качестве параметра другой команды и ее параметра (возможно, сложной структуры). Эта вторая команда является асинхронной, т.е. выполняет свой код в другом потоке. Передача в XAML не срабатывает. Выглядит примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
// класс обычной команды
public class Command : ICommand {}

// интерфейс команды, выполняемой в асинхронном режиме
public interface IAsyncCommand : ICommand, INotifyPropertyChanged, IDisposable {}

// класс команды, выполняемой в асинхронном режиме
public class AsyncCommand : IAsyncCommand {}

// класс модели окна
public clacc ViewModel
{
	// обычная команда, вызывающая асинхронные команды, переданные в качестве параметра
	public Command DispatchCommand { get {...} set {...} }

	// асинхронные команды
	public AsyncCommand FirstMethodCommand { get {...} set {...} }
	public AsyncCommand SecondMethodCommand { get {...} set {...} }
}

// класс параметра, передаваемого команде DispatchCommand
public class DispathCommandParams
{
	// асинхронная команда, которую нужно выполнить
	public IAsyncCommand Command 
	{
		set { SetValue(CommandProperty, value); }
		get { return (IAsyncCommand)GetValue(CommandProperty); }
	}

	// параметр асинхронной команды
	public object Parameter
	{
		set { SetValue(ParameterProperty, value); }
		get { return (object)GetValue(ParameterProperty); }
	}

	public static readonly DependencyProperty CommandProperty;
	public static readonly DependencyProperty ParameterProperty;

	static DispathCommandParams()
	{
		CommandProperty = DependencyProperty.Register(
			"Command",
			typeof(IAsyncCommand), 
			typeof(DispathCommandParams),
			new PropertyMetadata());
		
		ParameterProperty = DependencyProperty.Register(
			"Parameter", 
			typeof(object), 
			typeof(DispathCommandParams),
			new PropertyMetadata());
	}
}

А теперь XAML, в котором первая кнопка работает (точнее, в качестве параметра по привязке успешно передается ссылка на FirstMethodCommand), а вторая - нет (в качестве параметра в команду поступает ссылка на экземпляр класса CurrentCommandParameters, но его свойство Command равно NULL):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<Button Command="{Binding Path=DispatchCommand}" CommandParameter="{Binding Path=FirstMethodCommand}"/>
	Кнопка № 1 </Button>
<Button Command="{Binding Path=DispatchCommand}">
	<Button.CommandParameter>
		<local:DispathCommandParams Command="{Binding Path=FirstMethodCommand}" Parameter="500"/>
	</Button.CommandParameter>
	Кнопка № 2 </Button>

Не подскажете, как сделать, чтобы передача команды по привязке и ее параметра через экземпляр DispathCommandParams (как в кнопке №2) успешно работала?
...
Рейтинг: 0 / 0
Передача в XAML в качестве параметра сложной структуры с выражением привязки
    #36820385
i've WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XAML разный бывает.WPF и SL - две большие разницы в данном варианте
...
Рейтинг: 0 / 0
Передача в XAML в качестве параметра сложной структуры с выражением привязки
    #36821872
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересует вариант с WPF. Подскажете решение?
...
Рейтинг: 0 / 0
Передача в XAML в качестве параметра сложной структуры с выражением привязки
    #36823909
i've WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Передача в XAML в качестве параметра сложной структуры с выражением привязки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]