从另一个类调用Command(WPF,Mvvm)

时间:2017-08-14 08:57:55

标签: c# wpf mvvm

我在其中制作了一个带有复选框的列表框。列表框绑定到我的Checkbox类的List。现在我想在检查/取消选中复选框时从我的DataContext而不是我的Checkbox类调用命令

        <ListBox Grid.Column="1" ItemsSource="{Binding Databases}">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal"></StackPanel>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <CheckBox Content="{Binding Name}" IsChecked="{Binding IsChecked, Mode=TwoWay}" Margin="5 5 0 0" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

CheckBox类:

public class CheckBoxDatabase
{
    private string name;
    protected bool isChecked;
    public ObservableCollection<CheckBoxDatabase> Owner;

    public bool IsChecked
    {
        get { return isChecked; }
        set
        {
            setzeChecked(value);
            NotifyPropertyChanged();
        }

    }

    public virtual void setzeChecked(bool value)
    {
        isChecked = value;
    }


    public string Name
    {
        get { return name; }
        set
        {
            name = value;
            NotifyPropertyChanged();
        }
    }

    #region NotifyPropertyChanged
    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    #endregion
}

我的主要问题是如果我添加一个命令,它告诉我它在类中找不到(当然因为我希望它在我的datacontext类中调用它,我有一个relaycommand。(还有另一个relay命令)独立于所有这些工作,我完全相同)

1 个答案:

答案 0 :(得分:0)

如果要绑定到定义了> SO_45668510.cmd Version number 12345678.01 pass=12345678.01 pass=1234567802 pass=12345678.02 源集合的类的ICommand属性,可以使用Databases

RelativeSource

<CheckBox Content="{Binding Name}" Command="{Binding DataContext.YourCommandProperty, RelativeSource={RelativeSource AncestorType=ListBox}}" Margin="5 5 0 0" /> 替换为您的财产的实际名称。