2

データコンテキストとしてバインドされ、リフレクションを使用して作成された作成されたコントロールとしてコンテンツがバインドされるコントロールTabControlとして表されるリフレクションを介してコントロールのリストを作成するウィンドウがあります。ContentPresenter

<TabControl.ContentTemplate>
    <DataTemplate>
        <ContentPresenter Content="{Binding sub}" Loaded="smb_Loaded">
        </ContentPresenter>
    </DataTemplate>
</TabControl.ContentTemplate>

作成後、イベントをサブスクライブしたり、いくつかのメソッドやスレッドを実行したりするなど、作成したコントロール (すべてのコントロール) に対していくつかの操作を行う必要があるため、オブジェクトの初期化または作成後にそれを実行したかったのです。「Initialized」または「Loaded」イベントの後にこれを実行しようとしましたが、両方とも最初にロードしたコントロールでのみトリガーされます。リフレクションを使用して 3 つのコントロールを作成すると、ContentPresentersそのコントロールを含む 3 つのタブが作成されます。1 つのタブを選択すると、イベントがトリガーされます。次に別のものを選択すると、アプリケーションを再実行するまでまったくトリガーされません。

4

2 に答える 2

0

Items コレクションの変更を聞くことができます。

 CollectionViewSource.GetDefaultView(tab.Items).CollectionChanged += (o, ev) =>
 {
    Console.WriteLine("item added");
 };
于 2013-05-27T15:13:50.380 に答える