1

タブ コントロールを格納するユーザー コントロールを作成しようとしています。

私の質問は、タブを追加できるように、ユーザー コントロールを介してタブ コントロールを公開するにはどうすればよいですか?

コントロール全体には、上部のコマンド ボタン、タブ コントロール、およびメッセージを表示するスタイル付きテキスト ブロックの 3 つの領域があります。

コマンド ボタンは依存プロパティとして構成できるため、ユーザー コントロールを使用するときに適用ボタンを表示するかどうかを選択できます。私は厳密にはデザイナーであり、開発者ではないので、このコントロールを構築するために足を濡らそうとしていますが、少し頭がいっぱいです.

再利用可能にするのに苦労しているだけで、私が達成しようとしていることのために XAML を作成するのに問題はありません。


私がこれまでに試したことの詳細(まだ回答で何も試していません)。

タブコントロール項目ソースのコレクションを公開する依存関係プロパティを追加しようとしました:

public IEnumerable<object> TabSource
    {
        get { return (IEnumerable<object>)GetValue(TabSourceProperty); }
        set { base.SetValue(FunctionPanel.TabSourceProperty, value); }
    }

    public static DependencyProperty TabSourceProperty = DependencyProperty.Register(
         "TabSource",
         typeof(IEnumerable<object>),
         typeof(FunctionPanel));

そして、ユーザー コントロール XAML でそれにバインドします。

<TabControl Grid.Row="1" ItemsSource="{Binding TabSource}" />

最後に、ウィンドウ XAML で次のように使用したいと思います。

<local:FunctionPanel>
  <local:FunctionPanel.TabSource>
    <TabItem Header="Test" />
  </local:FunctionPanel.TabSource>
</local:FunctionPanel>

しかし、これは TabSource が認識できないかアクセスできないことを返します。以下に示す解決策を試します。

4

2 に答える 2

1

私の質問は、タブを追加できるように、ユーザー コントロールを介してタブ コントロールを公開するにはどうすればよいですか?

簡単なオプションの 1 つpublicは、ユーザー コントロールにメソッドを追加することです。

public void AddTab(string header)
{
    this.tabControl.Items.Add(header);
}

別のオプションはItems、ユーザー コントロールでプロパティを公開することです。

public ItemCollection Items
{
    get { return this.tabControl.Items; }
}
于 2013-05-20T17:44:29.033 に答える