从列表框项目模板中的按钮调用 Silverlight 命令

标签 silverlight mvvm listboxitem icommand

我已经看到这个问题被问了几次,但我还没有看到能够找到我的场景的完整答案。

在我的项目中,我有一个作为列表框项创建的用户控件。在这个用户控件中,我有一个按钮

            <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/

相关文章:

listview - 从ListView获取ClickedItem(使用MVVM)

单击时 C# XAML 列表框折叠

javascript - 检测 Silverlight 服务器端

c# - 字符串常量在编译后的 DLL 中占用多少空间?

c# - wpf如何控制 Storyboard

wpf - 如何根据条件隐藏wpf xaml中上下文菜单的菜单项

wpf - 如何一起使用 IsKeyboardFocusWithin 和 IsSelected?

wpf - 将样式应用于 ListBoxItem 而不影响内部的 ComboboxItem

c# - Silverlight 数据字段内容对齐

c# - Silverlight MVVM 实现不显示内容