2016-10-23 5 views
4

TabControlオブジェクトを使用してWPFアプリケーションを開発しているときに問題が発生しました。デバッグして問題を見つけようとしましたが、最終的にはそれを得ましたが、回避策は見つかりませんでした。ここにいくつかの説明があります:私のスタイルトグルボタンがTabControlの2番目のタブで機能しないのはなぜですか?

私はこのデータグリッドフィルタリングライブラリ(here is a codeproject url)を使用しましたが、それは(私の観点から)最高です。私はGoogleのマテリアルデザインのテーマでそれをカスタマイズし、フィルタリングオプションを表示/非表示するために、データガードの最初のタブヘッダーにあるトグルボタンを使用するなど、いくつかのグラフィカルな機能を変更します。

私はユーザーコントロールを作成し、それにカスタムのデータグリッドを配置しました。次に、そのコントロールをtabItemに埋め込みました。このコントロールを最初のtabItemに設定すると、すべて正常に動作します。しかし、私が他のtabItemにユーザーコントロールを変更すると、トグルボタンが機能しません。私はTabItemsの順序を変更した場合、それがうまく機能していること

<TabControl x:Name="tabControl"> 
     <TabItem Header="1'st Tab"> 
      <ContentControl DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"> 
       <Button Content="Do no thing"></Button> 
      </ContentControl> 
     </TabItem> 
     <TabItem Header="2'nd Tab"> 
      <ContentControl DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"> 
       <local:UserControl1/> 
      </ContentControl> 
     </TabItem> 
</TabControl> 

注:ここでは

は動作しませんでした私のメインウィンドウのXAMLコードです。誰もこの問題を解決する方法を提案していますか? Here is my sample project code on Github

Control was placed in the first tab Control was placed in the other tab

編集:今日、私は視覚的および論理ツリーの構造を見つけるために、「WPFインスペクタ」で自分のアプリケーションをテストします。私のアプリケーションに「WPF Inspector」を添付すると、すべてが機能し始めたので、その動作は奇妙でした。以下のGIFは私がやったことです:

Strange behavior GIF

+0

はSOへようこそ!あなたの質問のタイトルを変更しました。質問タイトルにタグを使用すべきかどうかについては、[ヘルプページ](http://stackoverflow.com/help/tagging)を参照してください。また、外部コードへのリンクを投稿するのではなく、[mcve]を提供する必要があります。 – dymanoid

+0

これらの2つのコードには違いはありません。 TabControl内のTabItemの順序のみを変更する必要があります。それにもかかわらず、いくつかのコード行を追加します。私はあなたの申し出に感謝します。 – Alireza

答えて

1

データオブジェクトのためのContentControlを使用して、あなたのケースでは、データコンテキストだ、あなたはデータオブジェクトへContentプロパティをバインドし、DataTemplateプロパティを指定します。この場合、DataTemplateの内容は、DataContextがあなたのデータオブジェクトに設定されます。ここで

は、作業サンプルです:

<TabControl x:Name="tabControl"> 
     <TabItem Header="1'st Tab"> 
      <ContentControl Content="{Binding .}"> 
       <ContentControl.ContentTemplate> 
        <DataTemplate> 
         <Button Content="Do no thing"></Button> 
        </DataTemplate> 
       </ContentControl.ContentTemplate> 
      </ContentControl> 
     </TabItem> 
     <TabItem Header="2'nd Tab"> 
      <ContentControl Content="{Binding .}"> 
       <ContentControl.ContentTemplate> 
        <DataTemplate> 
         <local:UserControl1/> 
        </DataTemplate> 
       </ContentControl.ContentTemplate> 
      </ContentControl> 
     </TabItem> 
    </TabControl> 
+0

私はあなたの助けに感謝します。私の問題は解決されました。 – Alireza

関連する問題