将WPF视图绑定到几个DataContexts

时间:2013-03-06 10:33:34

标签: c# wpf binding datacontext

目标:根据ComboBox

的选定值设置控件的可见性

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

详细信息:

我有一个CustomControl我在视图中加载DataContextList个显示为网格的对象:

<GUI:Counterparties_UserInputs x:Name="UserInputs" DockPanel.Dock="Right" DataContext="{Binding Source={StaticResource counterpartiesDataView}}"/>

在该用户控件中,我有一些StackPanel,应根据ComboBox的选择触发可见性:

<ComboBox ItemsSource="{Binding Source={StaticResource CounterpartyTypes}}" SelectedValue="{Binding SelectedCounterpartyType}"/>
<StackPanel Visibility="{Binding Path=SelectedCounterpartyType,Converter={StaticResource SelectedValueToVisible}}"/>

我遇到的问题是背后的代码永远不会被命中,因为我找不到如何将“额外”DataContext与视图相关联。

这是我背后的代码:

public partial class Counterparties_UserInputs : UserControl
{
   ...

    public Counterparties_UserInputs()
    {
        // this.DataContext = _cptyUserInputsVM;
        _cptyUserInputsVM = new Counterparties_UserInputs_VM();
        InitializeComponent();
    }
}

从未点击Property“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"));
            }
        }
    }
}

我已经看到answer了,但这并不是我正在做的事情......所以非常感谢你的帮助!谢谢!

0 个答案:

没有答案