この問題があります。MVVMを使用して作成されたSilverlightアプリがあります。ViewModelのプロパティにバインドされるDataFormを作成する必要があり、ComboBoxを追加して、同じViewModel内の他のコレクションからの値を入力したいと思います。
コード:
<dataFormToolkit:DataForm CurrentItem="{Binding NewUser, Mode=TwoWay}" AutoGenerateFields="False" Height="298">
<dataFormToolkit:DataForm.EditTemplate>
<DataTemplate>
<StackPanel>
<dataFormToolkit:DataField Label="Email">
<TextBox Text="{Binding Email, Mode=TwoWay}"/>
</dataFormToolkit:DataField>
<dataFormToolkit:DataField Label="Język">
<ComboBox ItemsSource="{Binding Path=Languages, Mode=TwoWay}"/>
</dataFormToolkit:DataField>
</StackPanel>
</DataTemplate>
</dataFormToolkit:DataForm.EditTemplate>
</dataFormToolkit:DataForm>
これはすべて、次のプロパティを持つNewAccountVMによって処理されます。
private User newUser;
public User NewUser {
get
{
return newUser;
}
set
{
if (value != newUser)
{
newUser = value;
RaisePropertyChanged("NewUser");
}
}
}
private ObservableCollection<Language> languages;
public ObservableCollection<Language> Languages
{
get { return languages; }
set
{
if (languages != value)
{
languages = value;
RaisePropertyChanged("Languages");
}
}
}
現在、これはすべて、ItemsSourceをComboBoxに追加する以外に機能します。CodeBehindでCBを埋める方法を示す多くの例を見つけましたが、MVVMスタイルでこれを実行したいと言ったように:) ComboBoxはDataFormからDataContextを継承し、このItemsSource = "{Binding Path = Languages、Mode = TwoWay} "は機能しませんが、目標を達成する方法がわかりません。
誰かが私を助けることができますか?