Цель - сделать отчет в CSV файл.
3 папки:
Human
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace Tutorial_Wpf_MVVM.Models
{
class Human : INotifyPropertyChanged
{
private string _firstname;
private string _surname;
private string _passport;
private string _databirth;
public string FirstName
{
get
{
return _firstname;
}
set
{
_firstname = value;
OnPropertyChanged("FirstName");
}
}
public string Surname
{
get
{
return _surname;
}
set
{
_surname = value;
OnPropertyChanged("Surname");
}
}
public string Passport
{
get
{
return _passport;
}
set
{
_passport = value;
OnPropertyChanged("Passport");
}
}
public string Databirth
{
get
{
return _databirth;
}
set
{
_databirth = value;
OnPropertyChanged("Databirth");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName]string prop = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
}
}
HumanViewModel
class HumansViewModel : INotifyPropertyChanged
{
private Human _selectedhuman;
public ObservableCollection<Human> Humans { get; set; }
public Human SelectedHuman
{
get { return _selectedhuman; }
set
{
_selectedhuman = value;
OnPropertyChanged("SelectedHuman");
}
}
public HumansViewModel()
{
Humans = new ObservableCollection<Human>
{
new Human { FirstName="Иван", Surname="Иванов", Passport="1111-111111",Databirth="1-1-1998"},
new Human { FirstName="Jahseh ", Surname="Dwayne ", Passport="2222-222222",Databirth="0-0-1990"}
};
}
public void AddHuman()
{
Human human = new Human();
Humans.Insert(0,human);
SelectedHuman = human;
}
public void DeleteHuman()
{
if (_selectedhuman != null)
{
Humans.Remove(SelectedHuman);
}
}
public void ReportingInCSV()
{
using (StreamWriter myOutputStream = new StreamWriter("Myfile.csv"))
{
foreach (var item in ReportBox.item)
{
myOutputStream.WriteLine(item.ToString());
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName]string prop = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
}
View
<Window x:Class="Tutorial_Wpf_MVVM.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:Tutorial_Wpf_MVVM"
mc:Ignorable="d"
Title="MVVM_Example" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" DataContext="{Binding SelectedHuman}" Grid.ColumnSpan="2" Margin="0">
<TextBlock Text="Выбранный элемент" Margin="5,0" />
<TextBlock Text="Имя" Margin="5,0" />
<TextBox Text="{Binding FirstName, UpdateSourceTrigger=PropertyChanged}" Margin="5,0" />
<TextBlock Text="Фамилие" Margin="5,0" />
<TextBox Text="{Binding Surname, UpdateSourceTrigger=PropertyChanged}" Margin="5,0" />
<TextBlock Text="Паспорт(серия-номер)" Margin="5,0" />
<TextBox Text="{Binding Passport, UpdateSourceTrigger=PropertyChanged}" Margin="5,0" />
<TextBlock Text="Дата рождения(дд.мм.гггг)" Margin="5,0"/>
<TextBox Text="{Binding Databirth, UpdateSourceTrigger=PropertyChanged}" Margin="5,0" />
<Button Click="Add_Click" Margin="5,0">+</Button>
<Button Click="Delete_Click" Margin="5,0">-</Button>
<Button Click="ReportingInCSV" Margin="5,0">Экспорт </Button>
</StackPanel>
<ListBox Name="ReportBox" Grid.Column="0" Grid.Row="0" ItemsSource="{Binding Humans}"
SelectedItem="{Binding SelectedHuman}" Margin="0,235,0,0">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="5">
<TextBlock Text="{Binding Path=FirstName}" />
<TextBlock Text="{Binding Path=Surname}" />
<TextBlock Text="{Binding Path=Passport}" />
<TextBlock Text="{Binding Path=Databirth}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>
cs
namespace Tutorial_Wpf_MVVM
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new HumansViewModel();
}
private void Add_Click(object sender, RoutedEventArgs e)
{
((HumansViewModel)DataContext).AddHuman();
}
private void Delete_Click(object sender, RoutedEventArgs e)
{
((HumansViewModel)DataContext).DeleteHuman();
}
private void ReportingInCSV(object sender, RoutedEventArgs e)
{
((HumansViewModel)DataContext).ReportingInCSV();
}
}
}
Собственно в ListBox
есть информация. Цель: при нажатии на кнопку генерировать все в csv file
public void ReportingInCSV()
{
using (StreamWriter myOutputStream = new StreamWriter("Myfile.csv"))
{
foreach (var item in ReportBox.item)
{
myOutputStream.WriteLine(item.ToString());
}
}
}
Но проблема в том что я не могу обратиться к ListBox'у
. Как будто нет соответствующего модификатора. Как можно реализовать это??
Виртуальный выделенный сервер (VDS) становится отличным выбором
В строке определения переменной text возникает ошибка StackOverflow и не знаю как можно избавиться от его потому что условие обязательное
Метод обрабатывает нажатие клавишы на клавиатуре (глобальный хук) и скрывает элементы на экранеОднако почему-то после активации if(!SomeOpened)...
Cбой во время установки НЛог там говориться что оно уже установлено но как можно включить это в референсес в Visual Studio 2012 Идет попытка разрешить...
Нужно производить простые арифметические действия над большими числами на C#Использовал библиотеку System