Question

Voilà comment je reproduis ce problème dans WPF:

Créer un contrôle personnalisé:

public class TestCustomControl : Control
{
static TestCustomControl()
{
    DefaultStyleKeyProperty.OverrideMetadata(typeof(TestCustomControl), new FrameworkPropertyMetadata(typeof(TestCustomControl)));
}

public string Text
{
    get { return (string)GetValue(TextProperty); }
    set { SetValue(TextProperty, value); }
}

// Using a DependencyProperty as the backing store for Text.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty TextProperty =
    DependencyProperty.Register("Text", typeof(string), typeof(TestCustomControl), new PropertyMetadata("Hello"));

public double OffSet
{
    get { return (double)GetValue(OffSetProperty); }
    set { SetValue(OffSetProperty, value); }
}

// Using a DependencyProperty as the backing store for OffSet.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty OffSetProperty =
    DependencyProperty.Register("OffSet", typeof(double), typeof(TestCustomControl), new PropertyMetadata(5.0));
}

Ajouter un style pour dans le fichier generic.xaml:

<Style TargetType="local:TestCustomControl">
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="local:TestCustomControl">
            <Grid>
                <TextBlock Text="{TemplateBinding Text}"></TextBlock>
                <TextBlock Text="{TemplateBinding Text}">
                    <TextBlock.RenderTransform>
                        <TranslateTransform X="{TemplateBinding OffSet}" Y="{TemplateBinding OffSet}"/>
                        <!--<TranslateTransform X="10" Y="10"/>-->
                    </TextBlock.RenderTransform>
                </TextBlock>
            </Grid>
        </ControlTemplate>
    </Setter.Value>
</Setter>

Ensuite, ajoutez à la fenêtre principale:

<local:TestCustomControl OffSet="32" Text="the off set is not working" FontSize="36">

    </local:TestCustomControl>

Ensuite, exécutez l'application, il est apparu le « texte » fonctionne bien mais le « OFFSET » ne fonctionne pas. Et j'ai essayé la même chose dans l'environnement de développement Windows Phone 7, et je suis le même résultat.

Comment dois-je modifier le code pour faire fonctionner OffSet?

Merci

Était-ce utile?

La solution

Essayez:

{Binding Offset, RelativeSource={RelativeSource TemplatedParent}}

Autres conseils

Les deux TemplateBing et RelativeSource ne fonctionnent pas, donc tout oublier si vous ciblez WP7.0 (Silverlight 3). Utilisez d'autres façons de travailler autour. En fait, je changé manuellement les valeurs X / Y de chaque transformation à chaque fois que la « OFFSET » est modifiée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top