2017-10-09 3 views
0

Ich habe eine Usercontrol, das den folgenden XAML enthält:User Control mit Viewbox - Bindung Pfaddaten

<Viewbox Style="{StaticResource shapeViewboxStyle}"> 
     <Canvas Width="32" Height="32" Margin="5"> 
      <Path Data="{Binding Path=PathData}"/> 
     </Canvas> 
</Viewbox> 

Im Code-behind ich eine Abhängigkeitseigenschaft aussetzen:

public string PathData 
    { 
     get { return (string)GetValue(PathDataProperty); } 
     set { SetValue(PathDataProperty, value); } 
    } 

    public static readonly DependencyProperty PathDataProperty = 
     DependencyProperty.Register("PathData", typeof(string), 
      typeof(ContentItemHeader), new PropertyMetadata(null)); 

Was ich will Wenn ich das Benutzersteuerelement einfüge, wird eine Zeichenfolge mit den Pfaddaten übergeben.

PathData="M 0,0 V 32 H 32 V 0 H 0 M 0,8 H 32" 

Aber das funktioniert nicht. Ich bekomme überhaupt kein Bild. Was mache ich falsch?

Antwort

1

die Bindung des Relative auf die Instanz Usercontrol Set:

<Path Data="{Binding PathData, RelativeSource={RelativeSource AncestorType=UserControl}}" 
     ... /> 
+0

Das hat geklappt! Wenn ich das richtig verstehe, was das sagt, benutze nicht den geerbten DataContext, sondern benutze den UserControl selbst? – cce1911

+0

In Ihrem Beispiel scheint kein geerbter DataContext zu existieren. Einstellung 'PathData =" M 0,0 V 32 H 32 V 0 H 0 M 0,8 H 32 "' setzt keinen DataContext. Im Allgemeinen sollte ein UserControl weder direkt auf einen geerbten DataContext zugreifen, noch sollte es explizit einen eigenen setzen. Es sollte Abhängigkeitseigenschaften verfügbar machen, die dann an Eigenschaften eines geerbten DataContext gebunden werden, wenn Sie das Steuerelement verwenden, wie ''. – Clemens

+0

Ich habe den DataContext im Code-Behind gesetzt, aber das nicht angezeigt. 'LayoutRoot.DataContext = this;' – cce1911