Usercontrol erstellen

  • WPF

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Usercontrol erstellen

    Ich möchte (bzw. habe es schon gemacht) ein einfaches UserControl erstellen:

    XML-Quellcode

    1. <UserControl x:Class="ToolTip_UserControl"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    6. xmlns:local="clr-namespace:CLIENTVISION"
    7. mc:Ignorable="d"
    8. Height="Auto"
    9. Width="Auto">
    10. <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
    11. <Image Source="/CLIENTVISION;component/images/png/007.png" Stretch="Uniform" Height="15" Width="15"/>
    12. <Label Margin="10 0 10 0" Foreground="Gray" Content="{Binding ToolTip, ElementName=ToolTip_UserControl}"/>
    13. </StackPanel>
    14. </UserControl>


    Das Control findet Verwendung im Fenster:

    XML-Quellcode

    1. <StackPanel Orientation="Horizontal">
    2. <StackPanel.ToolTip>
    3. <mycontrol:ToolTip_UserControl ToolTip="Stammdaten aktiv | deaktiv"/>
    4. </StackPanel.ToolTip>
    5. </StackPanel>


    Allerdings wird hier der Content vom Label "Stammdaten aktiv | deaktiv "nicht angezeigt. Das Image wird angezeigt.
    Was mache ich falsch?
    Hallo @Thomas2705

    Das liegt daran das dein Binding im UserControl falsch ist. Du bistes die Content-Eigenschaft auf ein Element mit dem Namen ToolTip_UserControl. Dieses Element gibt es aber innerhalb des ElementTrees des UserControls nicht. Zumindest hast du dem UserControl keinen "Name" verpasst. Ich würde auch davon absehen in diesem Fall über ElementName zu Binden.

    Das siehst du schön an dem Bindingfehler welcher dir vermutlich in der Ausgabe von VisualStudio angezeigt wird. Bei Binding ist immer genau auf diese Anzeige zu achten um Bindingfehler sofort zu finden.

    Suche am besten im Elementree das nächste Elements des Typs UserControl. Das finde ich sicherer und eleganter.

    z.b.

    XML-Quellcode

    1. <Label Margin="10 0 10 0" Foreground="Gray" Content="{Binding ToolTip, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"/>


    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##