Получение значения из статического расширения XAML - PullRequest
0 голосов
/ 29 ноября 2010

Как получить значение (Int32.MaxValue) из статического расширения:

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

...

<blablalba TooltipService.ShowDuration="{StaticResource TooltipTimeout}"/> <- кстати, это не работает </p>

Ответы [ 3 ]

1 голос
/ 29 ноября 2010

В 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}"/> 

.

1 голос
/ 29 ноября 2010

Мне кажется, что вы делаете что-то еще не так. Покажите это в 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>

Мод проверен, одобрен матерью.

Если бы мне пришлось угадывать, я думаю, вы неправильно определяете свое пространство имен xml для Int32.

0 голосов
/ 29 ноября 2010

Попробуйте привязать свой ресурс, указав его в качестве источника привязки:

{Binding Source={StaticResource TooltipTimeout}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...