日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Silverlight 2 RTW中ToolTipService.ToolTip不继承父节点的DataContext的问题

發(fā)布時間:2025/4/14 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Silverlight 2 RTW中ToolTipService.ToolTip不继承父节点的DataContext的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? 在Silverlight2 RTW中,利用ToolTipService.ToolTip可以實現(xiàn)ToolTip(提示)效果,例如:

<Button?Width="100"?Height="40"?Content="Button"?ToolTipService.ToolTip="這是提示信息"?/>

?? 顯示如圖:

我們還可以自定義提示信息的顯示樣式,例如改變字體或者顯示復雜的圖形,等等。例如:
????????<Button?Width="100"?Height="40"?Content="Button">
????????????
<ToolTipService.ToolTip>
????????????????
<Grid>
????????????????????
<Ellipse?Width="150"?Height="50"?Fill="Beige"></Ellipse>
????????????????????
<TextBlock?Text="這是提示信息"?Foreground="Red"?/>
????????????????
</Grid>
????????????
</ToolTipService.ToolTip>
????????
</Button> ? 顯示如圖:
對于提示信息,同樣可以使用Binding(特別是在ControlTemplate里常常使用Binding,例如ListBoxItem)。例如:
????????<Grid?DataContext="{StaticResource?MyUser}">
????????????
<Button?Width="100"?Height="40"?Content="Button"?ToolTipService.ToolTip="{Binding?UserName}"?/>
????????
</Grid> 但下面的這種綁定方式確不能正常顯示提示信息:
????????<Grid?DataContext="{StaticResource?MyUser}">
????????????
<Button?Width="100"?Height="40"?Content="Button">
????????????????
<ToolTipService.ToolTip>
????????????????????
<TextBlock x:Name="txt"?Text="{Binding?UserName}"?/>
????????????????
</ToolTipService.ToolTip>
????????????
</Button>
????????
</Grid> ??? 這是因為在Silverlight 2RTW里,ToolTipService.ToolTip沒有繼承上層元素的DataContext。如果我們顯示指定ToolTipService.ToolTip的DataContext,這種方式同樣可以工作。但顯示指定ToolTip的DataContext在有的場合是有點別扭,特別是在ControlTemplate里更是有一定的困難。 為了使ToolTip能夠利用父級的DataContext進行綁定,在http://silverlight.net/forums/p/14241/46745.aspx#46745討論了在Beta 1下修改ToolTip原代碼的方法。目前我還沒有找到Silverlight 2 RTW下對應的Controls完整示例代碼,為此,我們可以用一個變通的方式來繞過這個問題。既然直接在ToolTipService.ToolTip="{Binding?UserName}"?里能夠成功綁定,為了實現(xiàn)復雜的提示信息,我們可以借助Converter來實現(xiàn):
????<UserControl.Resources>
????????
<local:Converter?x:Name="myConverter"?/>
????
</UserControl.Resources>

????
<Grid?DataContext="{StaticResource?MyUser}">
????????
<Button?Width="100"?Height="40"?Content="Button"?ToolTipService.ToolTip="{Binding?UserName,Converter={StaticResource?myConverter}}"?/>
????
</Grid>
關鍵的部分我們在Converter里實現(xiàn):
????public?class?Converter?:?IValueConverter
????{
????????
#region?IValueConverter?Members

????????
public?object?Convert(object?value,?Type?targetType,?object?parameter,?System.Globalization.CultureInfo?culture)
????????{
????????????
if?(value?!=?null)
????????????{
????????????????var?s?
=?value.ToString();
????????????????TextBlock?block?
=?new?TextBlock();
????????????????block.Text?
=?s;
????????????????block.Style?
=?(Style)Application.Current.Resources["MyTextBlockStyle"];
????????????????
return?block;
????????????}
????????????
return?null;
????????}

????????
public?object?ConvertBack(object?value,?Type?targetType,?object?parameter,?System.Globalization.CultureInfo?culture)
????????{
????????????
throw?new?NotImplementedException();
????????}
可以參考這個帖子:http://silverlight.net/forums/p/84675/197144.aspx#197144

轉載于:https://www.cnblogs.com/qguohog/archive/2009/04/12/1434338.html

總結

以上是生活随笔為你收集整理的Silverlight 2 RTW中ToolTipService.ToolTip不继承父节点的DataContext的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。