Silverlight XAML: ссылка на класс кода программной части

Предполагая следующее определение модели представления:

public class MyObject {
public string Name { get; set; }

}

public interface IMyViewModel { 
ICommand MyCommand { get; }
IList<MyObject> MyList { get; }

}

И UserControl со следующим кодом:

public class MyView : UserControl {
public IMyViewModel Model { get; }

}

Если бы мой XAML выглядел так:

<UserControl>
<ListBox ItemsSource="{Binding MyList}">
    <ListBox.ItemTemplate>
        <TextBlock Text="{Binding Name}" />
        <Button Content="Execute My Command" cmd:Click.Command="{Binding Path=MyCommand, ?????????}" cmd:Click.CommandParameter="{Binding}" />
    </ListBox.ItemTemplate>
</ListBox>

How can I bind my Button to the ICommand property of my code-behind class?

Я использую Prism и SL 3.0, и мне нужно привязать каждую кнопку в моем списке к одной и той же команде в моей модели представления.

Раньше у моего UserControl было определенное имя, и я мог использовать привязку ElementName, но теперь мой UserControl используется несколько раз в одном и том же родительском представлении, поэтому я больше не могу использовать эту технику и не могу понять, как это сделать. в XAML.

Если это мой единственный вариант, я могу сделать это вручную в коде программной части, но я бы предпочел сделать это декларативно в XAML, если это возможно.


person Mark J Miller    schedule 08.12.2009    source источник


Ответы (1)


Вам нужен DataContextProxy, чтобы это работало, потому что вы больше не находитесь в контексте UserControl. Вы вышли из этого, и нет хорошего способа вернуться в этот контекст без чего-то вроде DataContextProxy. Я использовал его в своих проектах, и он отлично работает.

person Bryant    schedule 08.12.2009