Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Передача в XAML в качестве параметра сложной структуры с выражением привязки / 4 сообщений из 4, страница 1 из 1
30.08.2010, 21:15
    #36819993
JohnSparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в XAML в качестве параметра сложной структуры с выражением привязки
Необходимо реализовать в 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
31.08.2010, 09:24
    #36820385
i've WPF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в XAML в качестве параметра сложной структуры с выражением привязки
XAML разный бывает.WPF и SL - две большие разницы в данном варианте
...
Рейтинг: 0 / 0
31.08.2010, 17:30
    #36821872
JohnSparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в XAML в качестве параметра сложной структуры с выражением привязки
Интересует вариант с WPF. Подскажете решение?
...
Рейтинг: 0 / 0
01.09.2010, 15:03
    #36823909
i've WPF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в XAML в качестве параметра сложной структуры с выражением привязки
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Передача в XAML в качестве параметра сложной структуры с выражением привязки / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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