Silverlight 2 RTW中ToolTipService.ToolTip不继承父节点的DataContext的问题
生活随笔
收集整理的這篇文章主要介紹了
Silverlight 2 RTW中ToolTipService.ToolTip不继承父节点的DataContext的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? 在Silverlight2 RTW中,利用ToolTipService.ToolTip可以實現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}"?里能夠成功綁定,為了實現復雜的提示信息,我們可以借助Converter來實現:
????<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里實現:
????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的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IRIS在win2003中安装 报 er
- 下一篇: 职业成长交流第二季