如何从静态扩展名中检索值(Int32.MaxValue):
<x:Static
x:Key="TooltipTimeout"
Member="s:Int32.MaxValue"
/>
...
<blablalba TooltipService.ShowDuration="{StaticResource TooltipTimeout}"/>
&lt; - 这不适用
答案 0 :(得分:1)
你正在做其他错误的事情。把它放在kaxaml中:
<Page
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
<x:Static x:Key="Derp" Member="sys:Int32.MaxValue"/>
</Page.Resources>
<Grid>
<TextBlock
ToolTipService.ShowDuration="{StaticResource Derp}"
ToolTip="Derp" Text="Herp" />
</Grid>
</Page>
Mod测试,母亲批准。
如果我不得不猜测,我认为您没有正确定义Int32的xml命名空间。
答案 1 :(得分:1)
在WPF中,您可以直接访问静态成员,例如
<TextBlock TooltipService.ShowDuration="{x:Static s:Int32.MaxValue}"/>
但是,你不能在Silverlight中做同样的事情,因为它不起作用。在silveright中,你要编写一个包装类,就像这样,
public class StaticMemberAccess
{
public int Int32Max { get { return Int32.MaxValue; } }
//define other wrapper propeties here, to access static member of .Net or your classes
}
然后在XAML中执行此操作,
<UserControl.Resources>
<local:StaticMemberAccess x:Key="SMA"/>
</UserControl.Resources>
<TextBlock TooltipService.ShowDuration="{Binding Source={StaticResource SMA}, Path=Int32Max}"/>
答案 2 :(得分:0)
尝试通过将其设置为绑定的源来绑定到您的资源:
{Binding Source={StaticResource TooltipTimeout}}