从静态扩展XAML中检索值

时间:2010-11-29 12:28:30

标签: xaml

如何从静态扩展名中检索值(Int32.MaxValue):

    <x:Static
        x:Key="TooltipTimeout"
        Member="s:Int32.MaxValue"
        />

...

<blablalba TooltipService.ShowDuration="{StaticResource TooltipTimeout}"/>&lt; - 这不适用

3 个答案:

答案 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}}