開いているウィンドウのリスト (より具体的には、ウィンドウの名前またはタイトル) を表示するプログラムの一部を作成しようとしています。
したがって、ビューの XAML は次のようになります。
<Window.DataContext>
<local:ViewModel />
</Window.DataContext>
<ItemsControl ItemsSource="{Binding Windows}" />
クラスは次のようになりViewModel
ます。
public ObservableCollection<Window> Windows { get; set; }
public ViewModel()
{
this.Windows = new ObservableCollection<Window>();
this.Windows.Add(new Window());
}
これにより、プログラム (およびデザイナー ビュー) がスローされます。InvalidOperationException: Window must be the root of the tree. Cannot add Window as a child of Visual.
問題は、実際にそれ自体をクラスとしてではなくコントロールとしてItemsControl
追加したいと考えていることのようです(ウィンドウにテキストまたは同様のものを表示することが期待されます)。Window
System.Windows.Window
を追加してみまし<ItemsControl.ItemTemplate><DataTemplate>...
たが、これは同じ結果になるようです。
WindowHolder
最後に、 a の単一のパブリック プロパティを持つダミー クラスを作成してみましたWindow
。それは機能しているように見えますが、もっと単純であるべきだと感じていることを行うには、本当に洗練されていないように思えます。
tl;dr
質問は、「ビュー モデルItemsControl
の にバインドされた WPF にウィンドウ タイトルのリストを (できれば XAML で) 表示するにはどうすればよいですか?ObservableCollection<Window>