Objective:根据 a 的选定值设置控件的可见性ComboBox
问题:用于检查可见性的属性在 VM 中,但是我不知道如何使用它,因为DataContext
它已经定义到另一个对象,即我需要绑定 2 个数据上下文吗?!
细节:
我有一个CustomControl
在我的视图中加载的与之关联的DataContext
(List
显示为网格的对象的一个:
<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"));
}
}
}
}
我已经看到了那个答案,但这并不是我正在做的......所以非常感谢你的帮助!谢谢!