TemplateBinding + SIlverlight 4 + Стиль по умолчанию - PullRequest
0 голосов
/ 29 марта 2011

Я написал элемент управления содержимым со свойством Int Dependency в элементе управления содержимым.

Элемент управления имеет стиль по умолчанию, который содержит шаблон для элемента управления.

Теперь проблема, с которой я сталкиваюсьis, независимо от того, какое значение свойства зависимости, при рендеринге оно всегда показывает мне ноль

Вот пример кода:


<ControlTemplate x:Key="ControlTemplate2" TargetType="My:Control">
<Grid x:Name="grid" Width ="128" Height="128>
   <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal" Grid.Row="1">
    <TextBlock x:Name="tbxTileCount" DataContext="{TemplateBinding TileCount}" 
                                           Text="{Binding}" Margin="10,0,0,0" 
                                           Foreground="White" VerticalAlignment="Center" FontSize="48" FontFamily="Segoe WP">
<TextBlock.RenderTransform>
<CompositeTransform/>
</TextBlock.RenderTransform>
</TextBlock>
</StackPanel>
</Grid></Grid></ControlTemplate>

    /// <summary>
    /// Count to be displayed 
    /// </summary>
    public int Count
    {
        get { return (int)GetValue(CountProperty); }
        set { SetValue(CountProperty, value); }
    }

    public static readonly DependencyProperty CountProperty =
        DependencyProperty.Register("Count",
                                    typeof(int),
                                    typeof(Control),
                                    null);

Даже если свойство зависимости установлено в значение по умолчанию, DataContext текстового блока устанавливается в 0

Что я здесь пропустил?

1 Ответ

0 голосов
/ 29 марта 2011

Я мог бы заставить это работать. Вот как я заставил это работать: Очевидно, для Silverlight 4 это способ, которым вы связываете свойства элемента управления с шаблоном по умолчанию.


<ControlTemplate x:Key="ControlTemplate2" TargetType="My:Control">
    <Grid x:Name="grid" Width ="128" Height="128>
        <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal" Grid.Row="1">
            <TextBlock x:Name="tbxTileCount" Text="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Count}" 
                    Margin="10,0,0,0" Foreground="White" VerticalAlignment="Center" FontSize="48" FontFamily="Segoe WP">
                <TextBlock.RenderTransform>
                <CompositeTransform/>
                </TextBlock.RenderTransform>
            </TextBlock>
        </StackPanel>
    </Grid>
</ControlTemplate>
...