0

Objective:根据 a 的选定值设置控件的可见性ComboBox

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

细节:

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

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

在该用户控件中,我有一些StackPanel应根据 a 的选择触发的可见性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"));
            }
        }
    }
}

我已经看到了那个答案,但这并不是我正在做的......所以非常感谢你的帮助!谢谢!

4

0 回答 0