2010-11-22 12 views
1

I haben horizontale Skala mit Werten der Farbzuordnung folgenden (mehr oder weniger): 100% rot 80% Orange 60% gelb 40% hellgrün 20% grün 10% dunkelgrün Nun würde Ich mag zu setze Rechtecke auf dieser Skala mit unterschiedlicher Höhe (ähnlich dem Balkendiagramm) und ich möchte sie mit einem Gradient basierend auf dieser absoluten Skala und ihrer Höhe füllen, so dass, wenn mein Rechteck von 0% bis 40% auf dieser Skala ist, es gefüllt wäre mit Farbverlauf von dunkelgrün zu hellgrün etc.Wie füllen Rechtecke (mit unterschiedlicher Höhe) mit absolutem Gradienten in WPF?

Wie erreicht man das?

Hoffe, das ist alles klar.

Dank im Voraus

Antwort

2

Verwenden Multibinding auf beiden Eigenschaften: Die Position des Rechtecks ​​auf der Skala, und seine Höhe, mit einem multiBindingConverter.

zB:

<Window.Resources> 
    <c:NameConverter x:Key="myNameConverter"/> 
    ... 
</Window.Resources> 


... 

<Rectangle Name="myRectangle" DataContext="myDataContext"> 
    <Rectangle.Fill> 
    <MultiBinding Converter="{StaticResource myGradientConverter}"> 
     <Binding Path="PositionOnScale"/> 
     <Binding Path="Height"/> 
    </MultiBinding> 
    </Rectangle.Fill> 
</Rectangle > 

dann:

public class myGradientConverter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
    { 
     ... // do stuff here to return the corresponding Gradient 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 
    { 
     ... // do stuff here (optional) 
    } 
} 
0

ich jeden Balken im Diagramm in voller Größe setzen würde, dann auf ein anderes weißes Rechteck des Stabes setzen zu „verstecken“ der Teil das ist nicht sichtbar. Wenn Sie beispielsweise einen horizontalen Balken von links nach rechts haben und er 40% anzeigen soll, würde ich ein Rechteck voller Größe erstellen, das 100% und dann ein weißes Rechteck mit 60% Breite darüber legt es ist auf der rechten Seite angedockt, die die rechten 60% der Bar

verbergen wird
Verwandte Themen