我的控制,其中,每個可編輯控制(複選框,組合框等)具有相關聯的標籤的網格。我想分享標籤與其控件之間的工具提示。我該如何給一組控件提供一個工具提示,並讓它看起來順利?
現在這是我通過使用BindableToolTips完成的事情:我只是在我的XAML資源中定義工具提示,然後在標籤和控件上單獨設置相同的工具提示對象。
代碼:
<TextBlock Grid.Row="0"
Grid.Column="0"
ToolTipService.PlacementTarget="{Binding ElementName=ExampleControl}"
Utilities:ToolTipServiceExtended.BindableToolTip="{StaticResource ExampleControlTT}"
Text="Example label:" />
<CheckBox Grid.Row="0"
Grid.Column="1"
x:Name="ExampleControl"
Utilities:ToolTipServiceExtended.BindableToolTip="{StaticResource ExampleControlTT}"
Content="Example" />
不幸的是,這並不能使它看起來順暢......當鼠標從標籤移動到控件,或者從控制到標籤,工具提示消失,重新開放,看起來閃爍。即使標籤和控件之間沒有間隙,也會發生這種情況,並且看起來不太好。這顯然是因爲它們是兩個獨立的工具提示。
我想以某種組的標籤及其相關的控制,並有提示出現在該單組;這樣,當鼠標在兩者之間移動時,它可以流暢地出現並且不閃爍。不幸的是,我正在努力做到這一點。這裏有一些事情我已經試過......應用
與提示空的TextBlock和ColumnSpan = 2。
不幸的是,這樣可以防止接收來自鼠標點擊控制,將TextBlock覆蓋起來看不見。我試圖將IsHitTestVisible設置爲false,但是這樣可以防止鼠標接收事件,從而停止顯示工具提示。如果我可以讓鼠標點擊空白的TextBlock,但TextBlock仍然會獲得鼠標懸停的事件,那麼它就是完美的。
代碼:針對所述一個標籤
<TextBlock Grid.Row="0"
Grid.Column="0"
Text="Example label:" />
<CheckBox Grid.Row="0"
Grid.Column="1"
x:Name="ExampleControl"
Content="Example" />
<TextBlock Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2"
ToolTipService.PlacementTarget="{Binding ElementName=ExampleControl}"
Utilities:ToolTipServiceExtended.BindableToolTip="{StaticResource ExampleControlTT}" />
嵌套格子具體地和一個控制。
此方法似乎工作:只要鼠標位於內部網格上的任何位置,鼠標事件仍會成功傳遞給控件,就會出現工具提示。不幸的是,這有三個問題:
- 這是非常混亂的,因爲我需要的嵌套網格爲每一個標籤/控制組合。
- 的「自動」列寬不再考慮其他控件的寬度在所述外網格,因爲這當然是一個單獨的網格。
- 它似乎忽略提示佈局設置,這是安置=權,並與PlacementTarget作爲具體的控制。相反,工具提示出現在內部網格下方。
如果最後兩個問題可以解決,那麼這將是一個可接受的解決方案。
代碼:
<Grid Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2"
ToolTipService.PlacementTarget="{Binding ElementName=ExampleControl}"
Utilities:ToolTipServiceExtended.BindableToolTip="{StaticResource ExampleControlTT}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0"
Grid.Column="0"
Text="Example label:" />
<CheckBox Grid.Row="0"
Grid.Column="1"
x:Name="ExampleControl"
Content="Example" />
</Grid>
沒有任何人有一個很好的解決這個問題的任何想法?我只想讓我的工具提示出現在標籤和相關控件上,就好像它們是一個元素一樣,而鼠標在它們之間移動時不會閃爍。就這樣。
我通常不喜歡嵌套網格,並發現佈局更平滑與DockPanels和StackPanels的組合。 –