目的:選択した値に基づいてコントロールの可視性を設定しますComboBox
問題:可視性をチェックするために使用されているプロパティはVMにありますが、別のオブジェクトにすでに定義されているように使用する方法がわかりませんDataContext
。つまり、2つのデータコンテキストをバインドする必要がありますか?!
詳細:
CustomControl
ビューにロードするものがあり、それに関連付けられていますDataContext
(List
グリッドとして表示されるオブジェクトのa:
<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"));
}
}
}
}
私はすでにその答えを見ましたが、それは私がしていることとは正確には異なります...だから本当にあなたの助けに感謝します!ありがとうございました!