Frage

So reproduziert ich dieses Problem in WPF:

Erstellen Sie eine benutzerdefinierte Steuerung:

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));
}

Fügen Sie in der Datei generic.xaml einen Stil dafür hinzu:

<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>

Fügen Sie es dann zum Hauptfenster hinzu:

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

    </local:TestCustomControl>

Dann leiten Sie die Anwendung aus, es stellte sich heraus, dass der "Text" einwandfrei funktioniert, der "Offset" nicht funktioniert. Und ich habe die ähnliche Sache in der Windows Phone 7 -Entwicklungsumgebung ausprobiert und habe das gleiche Ergebnis erhalten.

Wie soll ich den Code ändern, damit der Offset funktioniert?

Vielen Dank

War es hilfreich?

Lösung

Versuchen:

{Binding Offset, RelativeSource={RelativeSource TemplatedParent}}

Andere Tipps

Sowohl die Vorlagen als auch die Verwandte, die zur Verfügung stehen, funktionieren nicht. Vergessen Sie es also einfach, wenn Sie auf WP7.0 (Silverlight 3) abzielen. Verwenden Sie einige andere Möglichkeiten, um es herumzuarbeiten. Ich habe die X/Y -Werte jeder Transformation jedes Mal manuell geändert, wenn der "Offset" geändert wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top