ViewModel クラス:
class MyViewModel : ViewModelBase, INotifyPropertyChanged
{
public string SomeText { get{...} set {...}}
public AnyNonMVVMControl MyControl { get {...} set {...}}
...
}
ウィンドウ XAML:
<Grid>
...
<TextBlock Text="{Binding SomeText}" />
<??? Content="{Binding MyControl}" /> <!-- how to bind MyControl to the View? -->
...
</Grid>
モデルを割り当てる
...
window.DataContext = new MyViewModel(...);
...
MVVM 用に設計されていないコントロールがあります。レンダリングとデータは強く結びついています (不適切な設計ソリューション)。ビューモデルにこのコントロールがあり、ウィンドウにバインドしたいと考えています。しかし、コントロールを XAML に直接追加したくありません。このコントロールにはビジネス ロジックとデータも含まれているためです。アクションを実行するにはビューモデルでアクセスする必要があります。
では、バインディングを介してウィンドウにコントロールを「追加」する方法は?