How do you color a rectangle in C# that has been declared in XAML in WPF?
There is a rectangle control in XAML. In my C# code there are times in which it would be nice to fill the background color. How does one do this?
For all the lazy programmers, the .net color enums:
myRectangle.Fill = new SolidColorBrush(System.Windows.Media.Colors.AliceBlue);
myRectangle.Fill = System.Windows.Media.Brushes.AliceBlue;Assuming you named your rectangle myRectangle, you can color it using the Fill property:
myRectangle.Height = 200;
myRectangle.Width = 200;
myRectangle.Stroke = new SolidColorBrush(Color.FromRgb(0, 111, 0));
myRectangle.Fill = new SolidColorBrush(Color.FromRgb(0, 111, 111));
Rectangle Colour in XAML for Windows Phone:
<Rectangle Width="480" Height="200">
<Rectangle.Fill>
<SolidColorBrush Color="Azure" />
</Rectangle.Fill>
</Rectangle>
Wpf binding would be able to do this without having to reference the control by name in code:
<Rectangle Width="480" Height="200" Fill="{Binding Path=FillColor}"/>
Then put a property on your DataContext class, assuming you have implemented INotifyPropertyChanged:
public Brush FillColor
{
get { return this.fillColor; }
set
{
this.fillColor = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
Then you can assign your required color to the FillColor property and the UI will update itself.
Rectangle blueRectangle = new Rectangle();
// Fill rectangle with blue color
blueRectangle.Fill = blueBrush;
Set the x:Name property in your XAML to what you want to refer to the rectangle as in your c# code. Then, you can access all of the properties of the rectangle in code, such as whateverYouNamedIt.Fill
For all of the people searching for this in 2019, I'm using WPF and you just add this property to your rectangle:
Your Rectangle should look something like this:
<Rectangle HorizontalAlignment="Left" Height="75" Stroke="Black" StrokeThickness="4" VerticalAlignment="Top" Width="792"/>
Right before the forward slash, add in Fill="YourColorHere", for example, I'm using this: Fill="AliceBlue".
IntelliSense should give you a list of colors to scroll through.
Here's a more detailed list of steps for the absolute beginner (i.e. me):
x:name="myRectangle" property[event]="My_Event" property (i.e. MouseDown="My_Event")"My_Event" text, and click Go to Definition. You'll be redirected to the .cs file where an event handler method will be generated for you. Something like: private void My_Event(object sender, DragEventArgs e) { }. Otherwise you can add it manually in the .cs filemyRectangle.Fill = Brushes.[color] (i.e. Brushes.AliceBlue)