Frage

Ich habe eine sehr einfache WPF Usercontrol bekam die wie folgt aussieht:

namespace WpfControlLibrary1
{
  public partial class UserControl1 : UserControl
  {
    public UserControl1()
    {
      InitializeComponent();
      Composite = new Composite();
      Composite.Color = Colors.Red;
    }

    protected override void OnRender(DrawingContext drawingContext)
    {
      Draw(drawingContext, new Rect(RenderSize));
    }

    public void Draw(DrawingContext g, Rect rect)
    {
      Composite.Draw(g, rect);
    }

    public Composite Composite
    {
      get;
      set;
    }
  }

  public class Composite
  {
    public void Draw(DrawingContext g, Rect rect)
    {
      g.DrawRectangle(new SolidColorBrush(Color), new Pen(Brushes.Black, 1.0), rect);
    }

    public Color Color
    {
      get;
      set;
    }
  }
}

Allerdings, wenn ich versuche, dies in der XAML des Fensters zu tun, in dem die Usercontrol sitzt:

<Window x:Class="WpfApplication1.Window2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:test="clr-namespace:WpfControlLibrary1;assembly=WpfControlLibrary1"
    Title="Window2" Height="500" Width="700">

  <test:UserControl1 Name="uControl1" Composite.Color="Blue">
  </test:UserControl1>
</Window>

Ich erhalte die folgenden Fehler:

Error   1   The attachable property 'Color' was not found in type 'Composite'.
Error   2   The property 'Composite.Color' does not exist in XML namespace 'http://schemas.microsoft.com/winfx/2006/xaml/presentation'.

Es muss einfacher Weg sein, die oben an der Arbeit, aber ich fürchte, ich habe nicht in der Lage gewesen, alle relevanten Informationen zu diesem Thema zu finden. Kann mir jemand bitte geben Sie einen Zeiger oder zwei?

Vielen Dank!

War es hilfreich?

Lösung

Die Syntax Type.Property wird eingestellt verwendet angebracht Eigenschaften . Versuchen Sie stattdessen:

<test:UserControl1 Name="whatever">
    <test:UserControl1.Composite>
        <test:Composite Color="Blue"/>
    </test:UserControl1.Composite>
</test:UserControl1>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top