2011-11-15 25 views
2

単純なmvvmバインディングのように見えるものに悩まされました。ItemsControlのツールチップがDataContextの変更で更新されない

私はツールチップを持つグリッドを持っています。グリッドのDataContextが変更され、textBlock内の値とツールチップ内に配置されたItemsControlを更新する必要があります。問題は、ツールチップ内のリストが更新されないことです。テストのために、私は同じItemsControlをテキストブロックの下に追加しました。このリストは問題なく更新されます。ここには、必要なものだけが含まれている簡略化されたコードがあります(私はそうだと思います)。

<Grid DataContext="{Binding SelectedRouting}"> 
    <StackPanel> 
     <TextBlock Text="{Binding ActionDescription}" /> 
     <ItemsControl ItemsSource="{Binding RoutingActionList}" ItemTemplate="{StaticResource SingleActionTemplate}"/> 
    </StackPanel> 

    <Grid.ToolTip> 
     <ToolTip Style="{StaticResource ActionToolTipStyle}"> 
      <ItemsControl ItemsSource="{Binding RoutingActionList}" ItemTemplate="{StaticResource SingleActionTemplate}"/> 
     </ToolTip> 
    </Grid.ToolTip> 
</Grid> 

質問です:最初のItemsControlメイングリッドのDataContextが変更されたアップデート(StackPanelの中​​1)とツールチップ内部二ItemsControlにはない理由。任意のアイデアやソリューションですか?

+0

が、それはシルバーやWPFですか? – Jehof

+0

WPF(不正確のため申し訳ありません) – Bartek

答えて

2

この質問のためのanswerを見て、これはあなたが望むものであるかもしれ - WPF Tooltip does not update

またあなたがあなたのツールチップののDataContextを設定することができ、それがその後、動作するはずツールチップの中にツールチップを設定したい場合には -

<Grid.ToolTip> 
     <ToolTip DataContext="{Binding SelectedRouting}" Style="{StaticResource ActionToolTipStyle}"> 
      <ItemsControl ItemsSource="{Binding RoutingActionList}" ItemTemplate="{StaticResource SingleActionTemplate}"/> 
     </ToolTip> 
    </Grid.ToolTip> 

ツールヒントはコントロールのビジュアルツリーに属していないため、変更はそのコントロールに伝播しません。したがって、あなたのツールチップのdataContextを設定することによって、DatacontextのPropertyChangesに対して通知可能になります。

+0

+1の答えを投稿で私よりも高速であるために:)あなたが書いた – Rachel

+0

ソリューションは、VS出力になります:DataContextを提供する要素を見つけることができません... – Bartek

1

私の最高の推測では、WPFは、WPFの異なる層の一部として、ツールヒントを読み込むことになりますので、PropertyChangeイベントが呼び出されるとき、それは、あなたのツールヒントのためのDataContextを指定するいずれか試してみてくださいメイン層

を時に起動されますそれはのPropertyChange通知を警告ますオブジェクトので、または

<Grid.ToolTip> 
    <ToolTip DataContext={Binding RoutingActionList}" Style="{StaticResource ActionToolTipStyle}"> 
     <ItemsControl ItemsSource="{Binding }" ItemTemplate="{StaticResource SingleActionTemplate}"/> 
    </ToolTip> 
</Grid.ToolTip> 

それとも

<Grid.ToolTip> 
    <ItemsControl ItemsSource="{Binding }" ItemTemplate="{StaticResource SingleActionTemplate}"/> 
</Grid.ToolTip> 
+0

最初のSugestionは、RV1987と同じVS出力を返します。DataContextを提供する要素が見つかりません。 – Bartek

0

ソリューションワットそれを完全に削除してくださいRV1987によって提供されるリンクのように。 <Grid.ToolTip>の中に<ToolTip>タグを入れることはできません。私が尋ねた問題を解決します。 とにかく小さな問題が残っています。タグを削除すると、ツールヒントにスタイルを割り当てることもできなくなります。ツールチップの中に何を入れても、デフォルトの枠線が表示されます。ツールチップにスタイルを割り当てる、つまり、すてきな暗い背景。今では、:(:(そのことについて任意のアイデアを行っています?

関連する問題