Hallo,
heute eine reinen Interessenfrage. Warum habt ihr euch entschieden, diese Seite in PHP zu schreiben? Bei einem C# Forum wäre ASP.NET doch die nahe liegende Wahl. Also woran saht ihr die Vorteile?
@MrSparkle
Was genau meinst du mit "fast ohne"? Entweder hast du Angaben gemacht, oder du hast die Default-Werte benutzt. Aber wie machst du "fast keine" Angaben?
Ich skaliere nur einige Icons und Bilder auf einheitliche Größen.
Hier der gekürzte Code:
<metro:MetroWindow
x:Class="OpenWeather.GUI.Views.MainWindow"
<!-- ... -->
Title="{x:Static properties:Resources.Title}" MinHeight="750" Height="750" MinWidth="600" Width="600"
RightWindowCommandsOverlayBehavior="HiddenTitleBar">
<metro:MetroWindow.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisibiltyConverter" />
<converters:EnumLocalizationConverter x:Key="EnumLocalizationConverter" />
</metro:MetroWindow.Resources>
<!-- Flyouts und Event Bindings -->
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="3*" />
<RowDefinition Height="3*" />
</Grid.RowDefinitions>
<ProgressBar IsIndeterminate="True"
Visibility="{Binding IsBusy, Converter={StaticResource BoolToVisibiltyConverter}}" Height="20" />
<TextBlock DataContext="{Binding Location}" FontSize="20" Grid.Row="1">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0},{1}" FallbackValue="-,-">
<Binding Path="City" FallbackValue="-" />
<Binding Path="Region.DisplayName" FallbackValue="-" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<DockPanel DataContext="{Binding CurrentWeather.Weather}" Grid.Row="2">
<TextBlock DockPanel.Dock="Right" Text="{Binding TempUnit}"
Margin="10" />
<TextBlock DockPanel.Dock="Left"
Text="{Binding Temperature, FallbackValue='-'}"
FontSize="30" />
</DockPanel>
<DockPanel Grid.Row="3">
<Image DockPanel.Dock="Left" Source="{Binding CurrentWeather.Icon}" Height="75" Width="75"
Stretch="Uniform" />
<TextBlock DockPanel.Dock="Right" DataContext="{Binding CurrentWeather.Weather}" TextAlignment="Left"
FontSize="20">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} ({1})" FallbackValue="- (-)">
<Binding Path="Condition" Converter="{StaticResource EnumLocalizationConverter}" />
<Binding Path="Description" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DockPanel>
<Grid DataContext="{Binding SunCycle}" Grid.Row="4">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Path Fill="Black" Height="25" Width="25"
Data="" />
<TextBlock Text="{x:Static properties:Resources.Sunrise}" />
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Grid.Column="1">
<Path Fill="Black" Height="25" Width="25"
Data="" />
<TextBlock Text="{x:Static properties:Resources.Sunset}" />
</StackPanel>
<TextBlock Text="{Binding Sunrise.TimeOfDay}" Grid.Row="1" />
<TextBlock Text="{Binding Sunset.TimeOfDay}" Grid.Row="1" Grid.Column="1" />
</Grid>
<Grid DataContext="{Binding CurrentWeather.Weather}" Grid.Row="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Path Fill="" />
<TextBlock Text="{x:Static properties:Resources.Humidity}" />
</StackPanel>
<TextBlock Grid.Row="1" Text="{Binding Humidity, FallbackValue='-', StringFormat={}{0} %}" FontSize="20" />
<TextBlock Grid.Column="1" Text="{x:Static properties:Resources.Pressure}" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Pressure,FallbackValue='-', StringFormat={}{0} hPa}"
FontSize="20" />
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Center">
<Path Fill="Black" Height="25" Width="25"
Data="" />
<TextBlock Text="{x:Static properties:Resources.WindSpeed}" />
</StackPanel>
<TextBlock Grid.Column="2" Grid.Row="1"
Text="{Binding WindSpeed,FallbackValue='-', StringFormat={}{0} meter/sec}" FontSize="20" />
</Grid>
<ListBox ItemsSource="{Binding DailyForecast}"
SelectedItem="{Binding SelectedForecastDay, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}"
Grid.Row="6">
<!-- ... -->
</ListBox>
<ListBox ItemsSource="{Binding HourlyForecastAtSelectedDay}" Grid.Row="7">
<!-- ... -->
</ListBox>
</Grid>
</metro:MetroWindow>
Hallo,
das Fenster ist ohne Canvas und fast ohne explizite Angaben von Width und Height erstellt. Auf einem größeren Bildschirm ist auch alles wie gewollt angezeigt, auf einem kleinen Notebook wird aber ein Teil abgeschnitten. Bisher dachte ich WPF ist Auflösungsunabhänig. Die eingestellte Mindestgröße müsste doch auf dem kleinen Bildschirm herunterskaliert werden... Wieso kann das nicht so sein?
Hallo,
ich möchte ein Neuladen-Symbol zeichnen, habe schon den Bogen und muss nun noch ein Dreieck an das obere Ende des ArcSegment anhängen:
<Path Stroke="Black" HorizontalAlignment="Center">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="0,20">
<PathFigure.Segments>
<ArcSegment Point="0,10" Size="10,10" SweepDirection="CounterClockwise" IsLargeArc="True"/>
</PathFigure.Segments>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
Wie kann ich ein soetwas zeichnen?
Hallo,
ich wollte das Kompilieren, Kopieren von Datein usw. automatisieren. Ich habe dafür ein Bash-Script geschrieben, finde aber für C# garnichts an dem ich mich orientieren könnte. Was müsste das Script neben xbuild noch alles ausführen? Wie kann ich zum Beispiel Nugetpackete installieren?
Version 1.4 veröffentlicht
Änderungen
-Automatische Aktualisierung des Wetters beim Start
-About-Fenster mit Lizenzen der verwendeten Open Source Bibliotheken
-Fehlerbehebungen und kleinere Verbesserungen
Download
Kann auf der "Projektseite" heruntergeladen werden.
Das Projekt ist nun auf dem Desktop und in der Konsole komplett. Ich werde das Projekt wahrscheinlich auch noch auf Android portieren.
Nach längerem bin ich auf folgende Lösung gekommen: (Dafür muss das Icon als Ressource kompiliert werden)
<Image Source="pack://application:,,,/Properties/Application.ico"/>
Hallo,
ich möchte an das Assembly-Icon. nicht das Window-Icon, als Image anzeigen. Wie lässt sich das umsetzen?
Danke, es sieht auf jeden Fall übersichtlicher aus. Gibt es eine Möglichkeit so auch Json Arrays zu erstellen?
Hallo,
ich habe simplere Parsing-Methoden immer mit Linq to Json getestet:
public static IEnumerable<object[]> LocationResponsesWithInvalidRegion
{
get
{
yield return new object[] { new JObject(new JProperty("name", "Stuttgart"), new JProperty("country", "dee")).ToString() };
yield return new object[] { new JObject(new JProperty("name", "New York"), new JProperty("country", "uss")).ToString() };
}
}
Ich finde es wesentlich übersichtlicher als Json direkt mit Text zu übergeben und auch das escapen der Anführungszeichen fällt weg. Bei einer Methode, die komplexeres Json verarbeitet, wäre es ein viel komplizierterer Aufbau. Außerdem bräuchte ich IEquatbable nur für die Unit-Tests. Gibt es eine Möglichkeit das einfacher zu testen oder lohnt sich dieser Aufwand?