C# 将WPF视图绑定到两个DataContext

C# 将WPF视图绑定到两个DataContext,c#,wpf,binding,datacontext,C#,Wpf,Binding,Datacontext,目标:根据组合框的选定值设置控件的可见性 问题:用于检查可见性的属性在VM中,但是我不知道如何使用它,因为DataContext已定义到另一个对象,即我是否需要绑定2个DataContext 详细信息: 我在视图中加载了一个CustomControl,它与DataContext关联(显示为网格的对象的列表: <GUI:Counterparties_UserInputs x:Name="UserInputs" DockPanel.Dock="Right" DataContext="{Bind

目标:根据组合框的选定值设置控件的可见性

问题:用于检查可见性的属性在VM中,但是我不知道如何使用它,因为
DataContext
已定义到另一个对象,即我是否需要绑定2个DataContext

详细信息:

我在视图中加载了一个
CustomControl
,它与
DataContext
关联(显示为网格的对象的
列表

<GUI:Counterparties_UserInputs x:Name="UserInputs" DockPanel.Dock="Right" DataContext="{Binding Source={StaticResource counterpartiesDataView}}"/>
我遇到的问题是,代码隐藏从未被命中,因为我找不到如何将“额外的”
DataContext
关联到视图

以下是我的代码:

public partial class Counterparties_UserInputs : UserControl
{
   ...

    public Counterparties_UserInputs()
    {
        // this.DataContext = _cptyUserInputsVM;
        _cptyUserInputsVM = new Counterparties_UserInputs_VM();
        InitializeComponent();
    }
}
以及从不点击
属性
“SelectedCounterpartyType”的ViewModel:

public class Counterparties_UserInputs_VM : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string _selectedCounterpartyType;

    public string SelectedCounterpartyType
    {
        get 
        {
            return _selectedCounterpartyType; 
        }
        set
        {
            _selectedCounterpartyType = value;
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs("SelectedCounterpartyType"));
            }
        }
    }
}

我已经看到了这一点,但这并不完全是我正在做的事情……因此,我非常感谢您的帮助!谢谢!

那么问题是什么?当您运行应用程序时,您的输出窗口必须说明什么?它可能会提供一些有用的信息。此外,您可以在每个setter中省去一些麻烦,请参见此处:我有更新了文本顶部(目标和问题),希望它更清晰。谢谢!
public class Counterparties_UserInputs_VM : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string _selectedCounterpartyType;

    public string SelectedCounterpartyType
    {
        get 
        {
            return _selectedCounterpartyType; 
        }
        set
        {
            _selectedCounterpartyType = value;
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs("SelectedCounterpartyType"));
            }
        }
    }
}