Ich habe ein ItemControl mit einem dataTemplate erstellt, das ein Rechteck enthält, das basierend auf der ItemsSource eingefärbt wird. Das Datum, das meiner Anwendung zugeführt wird, ist ein Farb-Hex-Code, der das Hash-Zeichen (#) nicht enthält. Nur eine 6-stellige Zeichenfolge. Damit die Farbe korrekt angezeigt wird, muss die 6-stellige Zeichenfolge mit dem # davor formatiert werden. exp # A31F34Wie wird Multibinding.StringFormat für die Fill-Eigenschaft eines Rechtecks verwendet?
Hier ist der XAML
<DataTemplate x:Key="ColorSequenceSwatchPreviews">
<Rectangle Name="ColorSwatch" Height="20" Width="120" RadiusX="3" RadiusY="3" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="0,3,0,3">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Fill">
<Setter.Value>
<MultiBinding>
<MultiBinding.StringFormat><![CDATA[#{0}]]></MultiBinding.StringFormat>
<Binding Path="InnerXml" Mode="OneWay" />
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</Rectangle.Style>
</Rectangle>
Ich bin ein MultiBinding.StringFormat mit dem String in einen Hexcode richtig zu formatieren, aber ich bin ratlos, warum die Füllung des Rechtecks nicht einfärben.
Ich bin in der Lage, das Rechteck zum Einfärben zu bekommen, wenn ich die MultiBinding mit einer TextBox mache, dann binden Sie die fill -Eigenschaft des Rechtecks an die Text -Eigenschaft der textBox. Ich würde jedoch lieber direkt aus der Fülleigenschaft des Rechtecks wie in meinem ersten Beispiel binden, da es sauberer ist.
<DataTemplate x:Key="ColorSequenceSwatchPreviews">
<StackPanel Orientation="Horizontal" Margin="0,3,0,3" VerticalAlignment="Center" HorizontalAlignment="Left">
<TextBox x:Name="Hexcode" Visibility="Collapsed">
<TextBox.Text>
<MultiBinding>
<MultiBinding.StringFormat><![CDATA[#{0}]]></MultiBinding.StringFormat>
<Binding Path="InnerXml" Mode="OneWay" />
</MultiBinding>
</TextBox.Text>
</TextBox>
<Rectangle Name="ColorSwatch" Height="20" Width="120" RadiusX="3" RadiusY="3" VerticalAlignment="Center" HorizontalAlignment="Left">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Fill" Value="{Binding ElementName=Hexcode,Path=,Mode=OneWay}" />
</Style>
</Rectangle.Style>
</Rectangle>
</StackPanel>
Gibt es eine Möglichkeit das erste Beispiel zur Arbeit zu kommen oder bin ich steckte mit dem Code aus dem zweiten Beispiel verwendet?
war auf etwas hoffen, die keinen Code hinter sich haben. Ich mag diese Lösung jedoch! – EMAW2008