2011-11-15 70 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的(那個在StackPanel中)更新時,主網的DataContext發生變化,第二ItemsControl的工具提示裏面沒有。任何想法或解決方案?

+0

是Silverlight還是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

VS輸出中的第一個消化和RV1987中的輸出相同找不到提供DataContext的元素。第二次嘗試幾乎可以。休息在下一篇文章 – Bartek

0

溶液W如RV1987提供的鏈接。 <Grid.ToolTip>內部不能有<ToolTip>標籤,它解決了我問到的問題。 無論如何還有一個小問題。刪除標籤也刪除了將樣式分配給工具提示的可能性。無論您在工具提示中放置什麼,都可以看到默認邊框。將工作提示分配給工具提示我擁有很好的黑暗背景。現在它已經過去了:(對此有任何想法嗎?