在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, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
--------------------------------------------------------------------------------------------------------------
可以参考这个帖子: http://silverlight.net/forums/p/84675/197144.aspx#197144 总结
以上是内存溢出为你收集整理的Silverlight 2 RTW中ToolTipService.ToolTip不继承父节点的DataContext的问题全部内容,希望文章能够帮你解决Silverlight 2 RTW中ToolTipService.ToolTip不继承父节点的DataContext的问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)