私は、コンボボックスを持つConfigSetupというダイアログボックスを持っています。データコンテキストはviewModelに設定されていますが、私のコンボボックスのItemSourceをメインウィンドウ(MainWindow)のプロパティにバインドする必要があります。 ViewModelには、ダイアログボックスのコードここコンボボックスItemSourceをDataContextにないプロパティにバインドする方法は?
public partial class ConfigSetup : Window, INotifyPropertyChanged
{
private ConfigSetupVM vm_ = null;
public ConfigSetup(CfgData cfgData)
{
vm_ = new ConfigSetupVM(cfgData);
InitializeComponent();
vm_.RequestClose += delegate
{
Close();
};
DataContext = vm_;
}
}
でセットアップがある。ここ
class ConfigSetupVM : ViewModelBase, IDataErrorInfo
{
...
/// <summary>
/// C-5000's microphone mode.
/// </summary>/
public CfgData.TMicMode MicMode
{
get { return model_.MicMode; }
set { model_.MicMode = value; NotifyPropertyChanged("MicMode"); }
}
にバインドするためにSelectedValueのプロパティを持つVM内のコードだとXAMLだのはここ
public partial class MainWindow : Window, INotifyPropertyChanged
{
...
public CfgData.TMicMode[] MicModeOptions
{
get
{
return (CfgData.TMicMode[])System.Enum.GetValues(typeof(CfgData.TMicMode));
}
}
}
ですコンボボックス
<Window x:Class="RpP25.ConfigSetup"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:RpWin="clr-namespace:RpP25"
Title="FCT Configuration"
Width="300"
SizeToContent="Height"
ResizeMode="NoResize"
WindowStartupLocation="CenterOwner" WindowStyle="ToolWindow"
FocusManager.FocusedElement="{Binding ElementName=name}"
Background="AliceBlue" >
<Window.Resources>
...
</Window.Resources>
...
<ComboBox Grid.Row="6" Grid.Column="1"
HorizontalAlignment="Right" MinWidth="75"
ItemsSource="{Binding RpWin:MainWindow.MicModeOptions, Mode=OneWay}"
SelectedValue="{Binding RpWin:MainWindow.MicMode, Mode=TwoWay, TargetNullValue=Not Selected,
ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True}" />
...
私はBindingにとって根本的なものが欠けていることは知っていますが、datacontext以外のものにバインドする方法を理解することはできません。ノー成功
あなたの助けを借りて... FindAncestorを使用しようとした
をいただければ幸いです。
感謝をブログ投稿する - なぜ私はそれを静的にする必要がありますか?方法2の場合 - 新しいリソースが追加のMainWindowオブジェクトを作成するのか、それとも既存のインスタンスへの参照ですか。 – Pat
私が知る限り、これまでのところ、既存のインスタンスをXAMLにリンクする方法はありません。だから、私はそれの参照を取得する '静的'を言及した。 –