Silverlight XAML: ссылка на класс с выделенным кодом - PullRequest
0 голосов
/ 08 декабря 2009

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

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>

Как я могу связать свой Button со свойством ICommand моего класса code-behind?

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

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

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

1 Ответ

1 голос
/ 08 декабря 2009

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

...