| 

.NET C# Java Javascript Exception

3
Ich bin auf der Suche nach einer flexiblen, kostenfreien Komponente, die Digitalanzeigen (so wie beim Radiowecker) in meiner Anwendung verfügbar macht. Wer kennt eine solche Komponente?
15.04.2011
Gina Moreno 31 1 2
3 Antworten
2
Hallo,

ich habe hier mal ein Codebeispiel für dich erstellt.

MainWindow.Xaml:
<Window x:Class="WPFTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPFTest"
Title="Window1" Width="800" Height="600">

<Window.Resources>
<local:Time x:Key="Clock" />
<local:DateTimeToStringConverter x:Key="Converter" />
<Style x:Key="DigitalFont">
<Setter Property="TextElement.FontFamily" Value="/res/#DS-DIGITAL" />
</Style>
</Window.Resources>

<Grid>
<TextBlock Text="{Binding Source={StaticResource Clock}, Path=Now, Converter={StaticResource Converter}}"
Style="{DynamicResource DigitalFont}"
FontSize="26" />
</Grid>
</Window>


Wie du siehst verwende ich hier eigene Klassen. Hier sind noch die Klassen:

public class Time : INotifyPropertyChanged
{
public Time()
{
Timer timer = new Timer();
timer.Interval = 1000; // 1 second updates
timer.Elapsed += TimerTick;
timer.Start();
}

public DateTime Now
{
get { return DateTime.Now; }
}

void TimerTick(object sender, ElapsedEventArgs e)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Now"));
}

public event PropertyChangedEventHandler PropertyChanged;
}

public class DateTimeToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
DateTime currentTime = (DateTime)value;

return string.Format("{0:H:mm:ss}",currentTime);
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}


Hier sind nun beide Klassen die verwendet werden.
Zur Erklärung:
Der TextBlock bindet an den Text Clock ==> Now, welches eine Instanz der Klasse Time ist.
In der Klasse Time wird die aktuelle Uhrzeit ermittelt und als ein DateTime Object zurück gegeben.
Mithilfe des Converters wir das DateTime in das gewünschte Format gebracht und zurückgegeben.

Interessant ist der Part mit dem Font. Ich habe in der Solution ein Verzeichnis "res" erstellt, wo die Datei drin liegt. Als Buildvorgang der Datei habe ich "Resource" angegeben.
Nun verweise ich hiermit auf die Datei:
<Setter Property="TextElement.FontFamily" Value="/res/#DS-DIGITAL" />

Interessant dabei ist, dass nicht der Dateiname sondern der Name des Fonts verwendet wird. Den Fontnamen erhälst indem du einen Doppelklick auf die Fontdatei machst. Der Name wird dann oben angezeigt.

in meinem Beispiel habe ich diese verwendet: http://www.dafont.com/ds-digital.font

Ich hoffe das hilft weiter ;)

Gruß Andy
15.04.2011
cruX 803 1 1 9
1
Das gibt es bei CodeProject: A WPF Digital Clock
15.04.2011
Jürgen Luhr 7,1k 2 9
0
Ich hatte so etwas mal in der Art selbst gebaut. In dem Beispiel habe ich eine Weckfunktion angefangen (bei Inaktivität), vielleicht kannst du es ja gebrauchen ;)



Download


Was so alles in der Readme steht, wollte ich damit mal umsetzen, aber ja die liebe Zeit... : )
15.04.2011
Mario Priebe 6,0k 3 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH