我已经看到这个问题被问了几次,但我还没有看到能够找到我的场景的完整答案。
在我的项目中,我有一个作为列表框项创建的用户控件。在这个用户控件中,我有一个按钮
<Button x:Name="DetailButton"
Grid.Column="1"
Width="107"
Height="23"
Margin="196,94,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Click="MoreDetail_Click"
Command="{Binding GetCFSDetailCommand}"
Content="View Details [+]" />
该按钮具有特定于 View 的单击事件,这基本上根据可见性状态展开或折叠网格行。我在这里使用了一个事件,因为它是特定于 ui 的。此按钮还有一个在 VM 中调用的命令。
虚拟机代码
public class SearchViewModel : INotifyPropertyChanged
{
private DelegateCommand _getCFSDetailCommand;
public DelegateCommand GetCFSDetailCommand
{
get
{
if (this._getCFSDetailCommand == null)
this._getCFSDetailCommand = new DelegateCommand(GetCFSDetailCommandExecute, CanGetCFSDetailCommandExecute);
return this._getCFSDetailCommand;
}
}
private void GetCFSDetailCommandExecute(object parameter)
{
//bind collection to model call here
}
我遇到的问题是按钮上的命令“丢失”或在列表框项内时从未调用过,我将 View 绑定(bind)到 vm,如果我将此命令放在 View 内的任何其他按钮上,则调用该命令。谁能帮我理解如何调用绑定(bind)到列表框项目中按钮的命令?
先感谢您
最佳答案
兰迪克,
在您的原始(第一篇)帖子中,您绑定(bind)了 CommandParameter
到列表项的本地数据上下文。在第二篇文章中,您错过了该绑定(bind),我认为在第二个端口的上下文中这是不可能的。
在您的情况下,我建议使用 Element to Element binding绑定(bind)到 GetCFSDetailCommand
来自父数据上下文的命令。
关于从列表框项目模板中的按钮调用 Silverlight 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6202741/