Зачем вам нужны круглые скобки вокруг значений атрибутов для анимации XAML? - PullRequest
6 голосов
/ 17 сентября 2010

Это долго беспокоило меня, и я не могу найти хорошее объяснение этому.Какова цель круглых скобок в этой разметке?Это XAML ярлык для кастинга?Почему кажется, что он используется только для анимации?

Storyboard.TargetProperty="(TextBlock.RenderTransform).(RotateTransform.Angle)"

Ответы [ 2 ]

4 голосов
/ 17 сентября 2010

Это синтаксис для указания типа, уточненного DependencyProperty. Это необходимо, поскольку прикрепленное свойство Storyboard.TargetProperty может быть присоединено к любому DependencyObject. Это означает, что синтаксический анализатор XAML не будет знать, как разрешить свойства, если они не будут полностью квалифицированы.

Этот синтаксис также используется для таких вещей, как привязка к присоединенным свойствам. Вот надуманный пример, чтобы продемонстрировать это:

<Grid>  
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="*" />
  </Grid.RowDefinitions>
    <Border x:Name="Foo" Background="Blue" Grid.Row="10" />
    <Border x:Name="Bar" Background="Red" Height="{Binding (Grid.Row), ElementName=Foo}" />
</Grid>

Если вы удалите скобки из Binding, вы получите ошибку привязки (поскольку у элемента Border нет свойства Grid).

0 голосов
/ 17 сентября 2010

Он используется не только для анимации (на ум приходит проверка) - это просто статические вызовы или приведения, соответственно. В основном вышеприведенный код переводится в (в псевдокоде):

((RotateTransform)TextBlock.GetRenderTransform((TextBlock) element)).Angle = newValue;

где элемент - это элемент, с которым выполняется действие, а newValue - свойства настройки анимации.

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