I want to make a window similar to the Android screen that shows the state of bluetooth, wifi..etc. I have a class that checks the state of said device and returns a byte value of 0 for off, 1 for on and 0xFF for error. I then made a Button (probably should be ToggleButton..but i'm very new to WPF)
public class ToggleTaskButton : System.Windows.Controls.Primitives.ButtonBase
{
public ImageSource ImageSource
{
get { return (ImageSource)GetValue(ImageSourceProperty); }
set { SetValue(ImageSourceProperty, value); }
}
public Color MyBackgroundColor
{
get { return (Color)GetValue(MyBackgroundColorProperty); }
set { SetValue(MyBackgroundColorProperty, value); }
}
// Using a DependencyProperty as the backing store for MyBackgroundColor. This enables animation, styling, binding, etc...
public static readonly DependencyProperty MyBackgroundColorProperty =
DependencyProperty.Register("MyBackgroundColor", typeof(Color), typeof(ToggleTaskButton), new PropertyMetadata(null));
// Using a DependencyProperty as the backing store for ImageSource. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ImageSourceProperty =
DependencyProperty.Register("ImageSource", typeof(ImageSource), typeof(ToggleTaskButton), new UIPropertyMetadata(null));
}
A note about that class above is that I'm thinking that I don't want a dependency property?? Instead I would rather set a value and the background color changes to the appropriate color. 0 would be gray, 1 would be green >1 would be red. One thing I don't know how to do
I then made a Bluetooth UserControl and then changed the type to ToggleTaskButton. The project this is just a Class Library, so I don't get a resource dictionary :/ I was trying to get the button click portion to work correctly before I posted this. Sorry for the mess.
<ata:ToggleTaskButton x:Class="AdvancedTaskAssigner.Controls.BluetoothControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ata="clr-namespace:AdvancedTaskAssigner.Controls"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" Loaded="UserControl_Loaded" Click="ToggleTaskButton_Click"
ImageSource="/AdvancedTaskAssigner;component/Resources/Bluetooth.png" MyBackgroundColor="Green">
<ata:ToggleTaskButton.Resources>
<Style TargetType="{x:Type ata:ToggleTaskButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ata:ToggleTaskButton}">
<Viewbox>
<Grid>
<Border BorderBrush="#FF58595B" BorderThickness="15,15,15,15" CornerRadius="8,8,8,8" >
<Border.Background>
<RadialGradientBrush>
<GradientStop Color="#FFB2B2B2" Offset=".75"/>
<GradientStop Offset="1" Color="#FFB2B2B2" />
</RadialGradientBrush>
</Border.Background>
<Viewbox>
<Image Margin="25" Height="100" Width="100" Source="{TemplateBinding ImageSource}" />
</Viewbox>
</Border>
</Grid>
</Viewbox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ata:ToggleTaskButton.Resources>
</ata:ToggleTaskButton>
CODE BEHIND
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace AdvancedTaskAssigner.Controls
{
/// <summary>
/// Interaction logic for BluetoothControl.xaml
/// </summary>
public partial class BluetoothControl : ToggleTaskButton
{
public BluetoothControl()
{
InitializeComponent();
task = new BrightnessTask();
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
CheckBluetoothState();
System.Console.Beep(1000, 100);
}
private void CheckBluetoothState()
{
//bluetoothState = ((byte)task.GetState() == 0x01);
//Color c = bluetoothState ? (Color)FindResource("enabledColor") : (Color)FindResource("disabledColor");
//this.outsideColor.Color = c;
}
private BrightnessTask task;
private bool bluetoothState = false;
private void ToggleTaskButton_Click(object sender, RoutedEventArgs e)
{
if (bluetoothState) { task.PerformTaskDown(); MessageBox.Show("BOO"); System.Console.Beep(1000, 100); } //if bluetooth enabled..disable
else { task.PerformTaskUp(); System.Console.Beep(2000, 100); MessageBox.Show("BOO"); }//if bluetooth disabled..enable.
CheckBluetoothState();
}
}
}
So I end up not really know what I am doing. I want this to be WPF because of the wide array of tablets and various screen sizes I'm giong to deal with. I'm thinking that OnLoad the control should use the bluetooth task to set the State. When the state gets set it changes the color of my second gradient stop on the Border Background. Please help. How do I set the GradientStop's color? And when I add this control to a UserControl in a WPF application it shows nothing, but in my designer it shows one of these 3 buttons