Frage

Ich möchte eine Leinwand haben, die das Dragdelta-Ereignis unterstützt. Meine erste Vorstellung davon, wie dies zu tun war eine Control zu machen, die einen Daumen enthält. Aber ich weiß nicht, wie dies richtig zu tun. Wie kann ich die XAML unten ändern, um es zu kompilieren, und was ist der richtige Weg, um die Dragdelta Event-Handler zu installieren?

<UserControl.Resources>
    <ControlTemplate x:Key="Transparent">
        <Rectangle Fill="Transparent"/>
    </ControlTemplate>
    <ControlTemplate x:Key="ThumbCanvas" TargetType="{x:Type Canvas}">
        <Grid>
            <Thumb x:Name="CanvasThumb" Template="{StaticResource Transparent}" DragDelta="CanvasThumb_DragDelta"/>
            <ContentPresenter Content="{TemplateBinding Content}"/>
            <!--error MC3011: Cannot find the static member 'ContentProperty' on the type 'Canvas'.-->
        </Grid>
    </ControlTemplate>
</UserControl.Resources>
War es hilfreich?

Lösung

Jede Platte abgeleitete Steuer keine Vorlage Eigenschaft haben, da sie keine sichtbaren Komponenten haben.

Sie können die Thumb-Steuerelement in der Usercontrol verwenden, wie Sie tun, und passen Sie einfach die Höhe / Breite des Benutzersteuerelements auf dem Delta des Thumb basiert. Um diese Arbeit richtig zu machen, müssen Sie die Mausposition in Bezug auf die Eltern des Usercontrol bekommen, sonst wird es nicht gut funktionieren. dh: e.GetLocation (this.Parent);

Sie sollten wahrscheinlich Größe, um die Höhe / Breite an diesem Daumen als auch. Es ist eine gute Idee, die Cursor darauf auch eingestellt werden.

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