Ich habe versucht, die Proben, ähnlich denen, die Charles Petzold demonstriert in seiner speech, aber leider kann ich nicht bekommen die TextBlock- der Vordergrund Eigentum zu akzeptieren meine Gewohnheit MarkupExtension
, die einfach gibt eine Farbe zu laufen:Warum akzeptiert die TextBlock.Foreground-Eigenschaft in XAML keine Farbe?
<Window x:Class="WpfApplication1.MainWindow"
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:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<StackPanel >
<TextBlock Foreground="{local:MyConverter}"
Text="{Binding Source={x:Reference slider},
Path=Value,
StringFormat='Rotation = {0:F2} degree'}">
</TextBlock>
<Slider x:Name="slider" Minimum="-360" Maximum="360"></Slider>
</StackPanel>
</Window>
mit der folgenden einfach Markup-Erweiterung:
class MyConverter : MarkupExtension
{
public override object ProvideValue(IServiceProvider serviceProvider)
{
return System.Drawing.Color.Red;
}
}
Nach der Start der Anwendung ich ein XamlParseException
mit einer inneren Ausnahme erhalten, die besagt: { "‚Farbe [Rot]‘ist keine gültige Wert für Eigenschaft ‚Vordergrund‘ "}
ich auch eine solide Bürste Rückkehr versucht habe. return new SolidBrush(Color.Red);
, aber mit dem gleichen Effekt. Was mache ich falsch? Und wie kann ich meine Foreground-Eigenschaft dazu bringen, ein Color-Objekt als Wert zu akzeptieren? Brauche ich eine andere Umwandlung in eine Zeichenkette?
Isn‘ t 'Vordergrund' vom Typ' System.Media.Brushes'? –
weil es Bürsten –