Hallöchen,
ich versuche gerade nachdem Tutorial von @Nofear23m die Culture zu setzten per Code nicht im XAML.
Allerdings wenn ich dies mache bleibt das Datumformat immer noch auf dem Englischen obwohl die Culture auf de-DE steht.
Mal hier der komplette XAML:
Spoiler anzeigen
Das "MainWindowViewModel" sieht wie folgt aus:
Spoiler anzeigen
Videoklasse:
Spoiler anzeigen
Das MainWindow CodeBehind hat dann den Code für die Culture Änderung:
Das Datum Format bleibt wie gehabt beim Englischen.... Verstehe nicht warum.
Hat jemand eine Idee?
ich versuche gerade nachdem Tutorial von @Nofear23m die Culture zu setzten per Code nicht im XAML.
Allerdings wenn ich dies mache bleibt das Datumformat immer noch auf dem Englischen obwohl die Culture auf de-DE steht.
Mal hier der komplette XAML:
XML-Quellcode
- <Window x:Class="xCrawler.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:xCrawler"
- xmlns:vms="clr-namespace:xCrawler.Klassen"
- mc:Ignorable="d"
- Title="MainWindow" Height="477.057" Width="882.595" Loaded="Window_Loaded">
- <Window.DataContext>
- <vms:MainWindowViewModel/>
- </Window.DataContext>
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="130"/>
- <ColumnDefinition Width="130"/>
- <ColumnDefinition Width="100*"/>
- </Grid.ColumnDefinitions>
- <Grid.RowDefinitions>
- <RowDefinition Height="40*"/>
- <RowDefinition Height="327*"/>
- <RowDefinition Height="52*"/>
- </Grid.RowDefinitions>
- <Button Content="Lade Daten" Grid.Row="0" Grid.Column="0" Margin="5" Width="120" Height="30" Command="{Binding GetVideosCommand}"/>
- <Button Content="Prüfe neue Videos" Grid.Row="0" Grid.Column="1" Margin="5" Width="120" Height="30" Command="{Binding TestCommand}"/>
- <ListBox Grid.Row="1" Grid.ColumnSpan="3" ItemsSource="{Binding Videos}" SelectedItem="{Binding SelectedVideo}">
- <ListBox.ItemTemplate>
- <DataTemplate>
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="120"/>
- <ColumnDefinition Width="*"/>
- </Grid.ColumnDefinitions>
- <Image Margin="5" Grid.Column="0" Source="{Binding Image}" RenderOptions.BitmapScalingMode="HighQuality"/>
- <StackPanel Grid.Column="1" Orientation="Vertical" VerticalAlignment="Center">
- <TextBlock Grid.Column="1" Text="{Binding Titel}" FontWeight="Bold"/>
- <TextBlock Grid.Column="1">
- <Run Text="{Binding VideoId}"/>
- <Run Text=" | "/>
- <Run Text="{Binding DateAdded}"/>
- </TextBlock>
- <TextBlock Grid.Column="1" Text="{Binding Status}"/>
- </StackPanel>
- </Grid>
- </DataTemplate>
- </ListBox.ItemTemplate>
- </ListBox>
- <TextBlock Grid.Row="2" Grid.ColumnSpan="3" VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding SelectedVideo.Titel}"/>
- </Grid>
- </Window>
Das "MainWindowViewModel" sieht wie folgt aus:
C#-Quellcode
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.ComponentModel;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Input;
- namespace xCrawler.Klassen
- {
- public class MainWindowViewModel : BaseModel
- {
- private ObservableCollection<Video> _videos;
- public ObservableCollection<Video> Videos
- {
- get { return _videos; }
- set
- {
- if (Equals(value, _videos)) return;
- _videos = value;
- OnPropertyChanged();
- }
- }
- private Video _selectedvideo;
- public Video SelectedVideo
- {
- get { return _selectedvideo; }
- set
- {
- if (Equals(value, _selectedvideo)) return;
- _selectedvideo = value;
- OnPropertyChanged();
- }
- }
- public MainWindowViewModel()
- {
- Videos = new ObservableCollection<Video>();
- for (int i = 0; i < 20; i++)
- {
- Video v1;
- if (i % 2 == 0)
- {
- v1 = new Video($"id{i}", $"titel1{i}", $"Uploader1{i}", $"kat,ad,asd,qweqw{i}", false, "Images/default.jpg");
- }
- else
- {
- v1 = new Video($"id{i}", $"titel1{i}", $"Uploader1{i}", $"kat,ad,asd,qweqw{i}", true, "Images/default.jpg");
- }
- Videos.Add(v1);
- }
- }
- }
- }
Videoklasse:
C#-Quellcode
- using System;
- using System.Collections.ObjectModel;
- using System.IO;
- using System.Net.Http;
- namespace xCrawler.Klassen
- {
- public class Video : BaseModel
- {
- public Video()
- {
- }
- public Video(string videoId, string titel, string uploader, string kategorien, bool status, string imagesource)
- {
- this.VideoId = videoId;
- this.Titel = titel;
- this.Uploader = uploader;
- this.Kategorien = kategorien;
- this.Status = status;
- this.Image = imagesource;
- this.DateAdded = DateTime.Now;
- }
- private string _imageUrl;
- public string Image
- {
- get { return _imageUrl; }
- set
- {
- if (Equals(value, _imageUrl)) return;
- _imageUrl = value;
- OnPropertyChanged();
- }
- }
- private DateTime _createDate;
- public DateTime DateAdded
- {
- get { return _createDate; }
- set
- {
- if (Equals(value, _createDate)) return;
- _createDate = value;
- OnPropertyChanged();
- }
- }
- private string _videoId;
- public string VideoId
- {
- get { return _videoId; }
- set
- {
- if (Equals(value, _videoId)) return;
- _videoId = value;
- OnPropertyChanged();
- }
- }
- private string _uploader;
- public string Uploader
- {
- get { return _uploader; }
- set
- {
- if (Equals(value, _uploader)) return;
- _uploader = value;
- OnPropertyChanged();
- }
- }
- private string _kategorien;
- public string Kategorien
- {
- get { return _kategorien; }
- set
- {
- if (Equals(value, _kategorien)) return;
- _kategorien = value;
- OnPropertyChanged();
- }
- }
- private bool _status;
- public bool Status
- {
- get { return _status; }
- set
- {
- if (Equals(value, _status)) return;
- _status = value;
- OnPropertyChanged();
- }
- }
- private string _titel;
- public string Titel
- {
- get { return _titel; }
- set
- {
- if (Equals(value, _titel)) return;
- _titel = value;
- OnPropertyChanged();
- }
- }
- }
- }
Das MainWindow CodeBehind hat dann den Code für die Culture Änderung:
C#-Quellcode
- using System.Diagnostics;
- using System.Globalization;
- using System.Threading;
- using System.Windows;
- using System.Windows.Markup;
- using xCrawler.Klassen;
- namespace xCrawler
- {
- public partial class MainWindow : Window
- {
- public MainWindow()
- {
- InitializeComponent();
- Debug.WriteLine($"{CultureInfo.CurrentCulture}");
- CultureInfo currentCulture = new CultureInfo("de-DE");//CultureInfo.CurrentCulture;
- Thread.CurrentThread.CurrentCulture = currentCulture;
- Thread.CurrentThread.CurrentUICulture = currentCulture;
- LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
- Debug.WriteLine($"{CultureInfo.CurrentCulture}");
- }
- }
- }
Das Datum Format bleibt wie gehabt beim Englischen.... Verstehe nicht warum.
Hat jemand eine Idee?