WPF - Datenbindung in einfachen User-Kontrolle
Mein problem ist sicherlich richtig auf mein Gesicht, aber ich kann es nicht sehen...
Baue ich eine sehr einfache Benutzer - Steuerelement-eine 3D-ellipse - und ich setze zwei Eigenschaften: LightColor und DarkColor. Ich zu binden, müssen diese Eigenschaften der Gradienten in meinem user-control, aber es wird nicht zeigen keine Farbe überhaupt. Hier ist mein usercontrol:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestBrushes"
mc:Ignorable="d"
x:Class="TestBrushes._3DEllipse"
x:Name="UserControl"
d:DesignWidth="200" d:DesignHeight="200">
<Grid x:Name="LayoutRoot">
<Ellipse Name="MainEllipse" Stroke="{x:Null}">
<Ellipse.Fill>
<RadialGradientBrush GradientOrigin="0.5,1.1">
<GradientStop Color="{Binding ElementName=UserControl, Path=LightColor}" Offset="1"/>
<GradientStop Color="{Binding ElementName=UserControl, Path=DarkColor}" Offset="0"/>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Ellipse Name="TopReflectionEllipse" Stroke="{x:Null}" Margin="38,0,38,0" VerticalAlignment="Top" Height="90">
<Ellipse.Fill>
<RadialGradientBrush GradientOrigin="0.5,0">
<RadialGradientBrush.RelativeTransform>
<TransformGroup>
<ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1" ScaleY="1"/>
<SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.5"/>
<RotateTransform Angle="0" CenterX="0.5" CenterY="0.5"/>
<TranslateTransform X="0" Y="0"/>
</TransformGroup>
</RadialGradientBrush.RelativeTransform>
<GradientStop Color="#A5FFFFFF" Offset="0"/>
<GradientStop Color="#00FFFFFF" Offset="1"/>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
</Grid>
</UserControl>
und hier ist mein code-behind:
public partial class _3DEllipse
{
public _3DEllipse()
{
InitializeComponent();
}
public Color DarkColor { get; set; }
public Color LightColor { get; set; }
}
Wenn ich die Farben im Gegensatz zu der Bindung gezeigt, die in den code, es funktioniert ok, aber ich wollen, verwenden Sie die Eigenschaften ich bin aufdeckt. Was mache ich falsch?
Dank!
InformationsquelleAutor Gus Cavalcanti | 2009-07-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein Problem ist wahrscheinlich, dass Sie nicht notifiying das UserControl von änderungen vorgenommen, um den Wert der DarkColor und LightColor Eigenschaften. Zu tun, so werden Sie die Notwendigkeit zur Umsetzung der INotifyPropertyChanged - Schnittstelle. Der Zweck dieser Schnittstelle ist, um UI-Komponenten zu beachten sind, wenn der Wert, den Sie gebunden sind, aktualisiert wird; Sie abonnieren Sie den PropertyChanged-Ereignis, ausgesetzt ist, durch Implementierung der Schnittstelle.
Einer Beispiel-Implementierung weiter unten, ich habe Links die DarkColor Eigenschaft allein, aber es würde aktualisiert werden, in der gleichen Art und Weise.
Ich habe gerade verwendet eine Abhängigkeitseigenschaft und alles funktionierte gut.
Nur mit einem DependencyProperty-funktioniert gut, aber man muss INotifyPropertyChanged implementieren.
InformationsquelleAutor Richard McGuire