WPF Binding Problem

30/10/2008 - 17:51 von Lars Steinmetz | Report spam
Ich habe ein (von System.Windows.Controls.Button) abgeleitetes Control,
welches ein Color-DependencyProperty besitzt. Im xaml-Code soll nun eine
Brush-Resource definiert werden, die sich auf dieses
Dependency-Property synchronisieren soll. Nur wie? Meine bisherige Idee
war die Folgende:


// XAML
<Button x:Class="WpfApplication1.MyButton"
xmlns="http://schemas.microsoft.com/winfx/...tion"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:clr="clr-namespace:WpfApplication1"
Name="myButton">

<Button.Resources>

<LinearGradientBrush x:Key="brush1">
<GradientStop Color="White" Offset="0.0"/>
<GradientStop Color="{Binding ElementName=myButton,
Path=MyColor}" Offset="1.0"/>
</LinearGradientBrush>

<Style TargetType="{x:Type clr:MyButton}">
<Setter Property="Background" Value="{StaticResource brush1}"/>
</Style>

</Button.Resources>

</Button>

// C#
public static DependencyProperty MyColorProperty DependencyProperty.Register("MyColor", typeof(Color),
typeof(MyButton), new PropertyMetadata(Colors.Black));

public Color MyColor
{
get{return (Color)this.GetValue(MyButton.MyColorProperty);}
set{this.SetValue(MyButton.MyColorProperty, value);}
}


Leider erfolglos. Wie geht's denn nun richtig?


Vielen Dank im Voraus!

Gruß Lars
 

Lesen sie die antworten

#1 Martin Honnen
31/10/2008 - 15:09 | Warnen spam
Lars Steinmetz wrote:
Ich habe ein (von System.Windows.Controls.Button) abgeleitetes Control,
welches ein Color-DependencyProperty besitzt. Im xaml-Code soll nun eine
Brush-Resource definiert werden, die sich auf dieses
Dependency-Property synchronisieren soll. Nur wie? Meine bisherige Idee
war die Folgende:


// XAML
<Button x:Class="WpfApplication1.MyButton"
xmlns="http://schemas.microsoft.com/winfx/...tion"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:clr="clr-namespace:WpfApplication1"
Name="myButton">

<Button.Resources>

<LinearGradientBrush x:Key="brush1">
<GradientStop Color="White" Offset="0.0"/>
<GradientStop Color="{Binding ElementName=myButton,
Path=MyColor}" Offset="1.0"/>
</LinearGradientBrush>



Eventuell funktioniert das über RelativeSource
<GradientStop Color="{Binding
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type
WpfApplication1.MyButton}}, Path=MyColor}" Offset="1.0"/>

Doku ist online http://msdn.microsoft.com/de-de/lib...43599.aspx



Martin Honnen MVP XML
http://JavaScript.FAQTs.com/

Ähnliche fragen