YuS_2,
xaml
<Window x:Class="WPF_Inkass.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"
Title="Инкассация" Height="400" Width="500" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
<Grid ForceCursor="True" Width="auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" MinWidth="180"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid x:Name="GridBills" Height="auto" Width="auto" Grid.Column="0" Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Label Content="Номинал" HorizontalContentAlignment="Center" Grid.Column="0" Background="AntiqueWhite"/>
<Label Content="Количество" HorizontalContentAlignment="Center" Grid.Column="1" Background="AntiqueWhite" BorderBrush="Transparent"/>
<Label Content="Итого" HorizontalContentAlignment="Center" Grid.Column="2" Background="AntiqueWhite"/>
<Label Content="1 грн" Width="auto" Height="auto" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Grid.Row="1"/>
<Label Content="2 грн" Width="auto" Height="auto" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Grid.Row="2"/>
<Label Content="5 грн" Width="auto" Height="auto" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Grid.Row="3"/>
<Label Content="10 грн" Width="auto" Height="auto" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Grid.Row="4"/>
<Label Content="20 грн" Width="auto" Height="auto" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Grid.Row="5"/>
<Label Content="50 грн" Width="auto" Height="auto" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Grid.Row="6"/>
<Label Content="100 грн" Width="auto" Height="auto" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Grid.Row="7"/>
<Label Content="200 грн" Width="auto" Height="auto" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Grid.Row="8"/>
<Label Content="500 грн" Width="auto" Height="auto" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Grid.Row="9"/>
<Label Content="1000 грн" Width="auto" Height="auto" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Grid.Row="10"/>
<TextBox Name="Bills1UAH_NumberTextbox" TabIndex="1" IsTabStop="True" BorderBrush="IndianRed" Grid.Column="1" Grid.Row="1" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBox Name="Bills2UAH_NumberTextbox" BorderBrush="IndianRed" Grid.Column="1" Grid.Row="2" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBox Name="Bills5UAH_NumberTextbox" BorderBrush="IndianRed" Grid.Column="1" Grid.Row="3" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBox Name="Bills10UAH_NumberTextbox" BorderBrush="IndianRed" Grid.Column="1" Grid.Row="4" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBox Name="Bills20UAH_NumberTextbox" BorderBrush="IndianRed" Grid.Column="1" Grid.Row="5" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBox Name="Bills50UAH_NumberTextbox" BorderBrush="IndianRed" Grid.Column="1" Grid.Row="6" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBox Name="Bills100UAH_NumberTextbox" BorderBrush="IndianRed" Grid.Column="1" Grid.Row="7" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBox Name="Bills200UAH_NumberTextbox" BorderBrush="IndianRed" Grid.Column="1" Grid.Row="8" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBox Name="Bills500UAH_NumberTextbox" BorderBrush="IndianRed" Grid.Column="1" Grid.Row="9" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBox Name="Bills1000UAH_NumberTextbox" BorderBrush="IndianRed" Grid.Column="1" Grid.Row="10" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBox Name="Bills1UAH_ResultTextbox" IsTabStop="False" Text="0" Grid.Column="2" Grid.Row="1" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly ="True" BorderBrush="Transparent"/>
<TextBox Name="Bills2UAH_ResultTextbox" IsTabStop="False" Text="0" Grid.Column="2" Grid.Row="2" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly ="True" BorderBrush="Transparent"/>
<TextBox Name="Bills5UAH_ResultTextbox" IsTabStop="False" Text="0" Grid.Column="2" Grid.Row="3" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly ="True" BorderBrush="Transparent"/>
<TextBox Name="Bills10UAH_ResultTextbox" IsTabStop="False" Text="0" Grid.Column="2" Grid.Row="4" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly ="True" BorderBrush="Transparent"/>
<TextBox Name="Bills20UAH_ResultTextbox" IsTabStop="False" Text="0" Grid.Column="2" Grid.Row="5" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly ="True" BorderBrush="Transparent"/>
<TextBox Name="Bills50UAH_ResultTextbox" IsTabStop="False" Text="0" Grid.Column="2" Grid.Row="6" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly ="True" BorderBrush="Transparent"/>
<TextBox Name="Bills100UAH_ResultTextbox" IsTabStop="False" Text="0" Grid.Column="2" Grid.Row="7" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly ="True" BorderBrush="Transparent"/>
<TextBox Name="Bills200UAH_ResultTextbox" IsTabStop="False" Text="0" Grid.Column="2" Grid.Row="8" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly ="True" BorderBrush="Transparent"/>
<TextBox Name="Bills500UAH_ResultTextbox" IsTabStop="False" Text="0" Grid.Column="2" Grid.Row="9" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly ="True" BorderBrush="Transparent"/>
<TextBox Name="Bills1000UAH_ResultTextbox" IsTabStop="False" Text="0" Grid.Column="2" Grid.Row="10" Width="auto" Height="auto" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" IsReadOnly ="True" BorderBrush="Transparent"/>
</Grid>
<Grid x:Name="GridAdditionals" Height="auto" Width="auto" Grid.Column="1" Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition x:Name="Title0" Height="auto"/>
<RowDefinition x:Name="Date1" MinHeight="40" Height="auto"/>
<RowDefinition x:Name="Bag2" MinHeight="30" Height="auto"/>
<RowDefinition x:Name="Sender3" MinHeight="30" Height="auto"/>
<RowDefinition x:Name="Recipient4" MinHeight="30" Height="auto"/>
<RowDefinition x:Name="ResultSum5"/>
<RowDefinition x:Name="Button6"/>
<RowDefinition x:Name="Notes7" Height="auto"/>
</Grid.RowDefinitions>
<Label HorizontalContentAlignment="Center" Content="Доп. информация" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Background="AntiqueWhite"/>
<Label x:Name="InkassDateLabel" HorizontalContentAlignment="Right" Content="Дата инкассации" VerticalAlignment="Center" Grid.Row="1" Grid.Column="0"/>
<DatePicker Name="InkassDate" IsTodayHighlighted="True" VerticalContentAlignment="Center" Grid.Row="1" Grid.Column="1"/>
<Label x:Name="BagNumberLabel" HorizontalContentAlignment="Right" Content="Сумка №" VerticalAlignment="Center" Grid.Row="2" Grid.Column="0"/>
<TextBox BorderBrush="IndianRed" Name="BagNumberTextbox" VerticalContentAlignment="Center" Grid.Row="2" Grid.Column="1"/>
<Label x:Name="SenderLabel" HorizontalContentAlignment="Right" Content="Отправитель:" VerticalAlignment="Center" Grid.Row="3" Grid.Column="0"/>
<TextBox BorderBrush="IndianRed" Name="SenderTextbox" Text="ФОП " VerticalContentAlignment="Center" Grid.Row="3" Grid.Column="1"/>
<Label x:Name="RecipientLabel" HorizontalContentAlignment="Right" Content="Получатель:" VerticalAlignment="Center" Grid.Row="4" Grid.Column="0"/>
<TextBox BorderBrush="IndianRed" Name="RecipientTextbox" Text="ФОП " VerticalContentAlignment="Center" Grid.Row="4" Grid.Column="1"/>
<Label Name="ResultLabel" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="0"/>
<TextBox Name="ResultTextbox" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Row="5" Grid.Column="1" IsTabStop="False" BorderBrush="Transparent" IsReadOnly="True" IsHitTestVisible="False"/>
<Button IsTabStop="False" IsEnabled="True" Name="FinalButton" Content="Сначала заполни всё красное" Grid.ColumnSpan="2" Grid.Row="6" Width="auto" Height="auto" BorderBrush="Black"/>
</Grid>
</Grid>
</Window>
posh (в текущем виде)
<#
To be able to export GUI made in Visual Studio into Powershell:
Change first XAML row
From: <Window x:Class="WPF_Inkass.MainWindow"
To: <Window
TODO: format automatically
#>
<########################
#### FUNCTIONS START ####
#########################>
function fValidate {
# todo
}
function fCalculateSumms {
# Bills
$Bills1UAH_ResultTextbox.Text = (1 * $($Bills1UAH_NumberTextbox.Text))
$Bills2UAH_ResultTextbox.Text = (2 * $($Bills2UAH_NumberTextbox.Text))
$Bills5UAH_ResultTextbox.Text = (5 * $($Bills5UAH_NumberTextbox.Text))
$Bills10UAH_ResultTextbox.Text = (10 * $($Bills10UAH_NumberTextbox.Text))
$Bills20UAH_ResultTextbox.Text = (20 * $($Bills20UAH_NumberTextbox.Text))
$Bills50UAH_ResultTextbox.Text = (50 * $($Bills50UAH_NumberTextbox.Text))
$Bills100UAH_ResultTextbox.Text = (100 * $($Bills100UAH_NumberTextbox.Text))
$Bills200UAH_ResultTextbox.Text = (200 * $($Bills200UAH_NumberTextbox.Text))
$Bills500UAH_ResultTextbox.Text = (500 * $($Bills500UAH_NumberTextbox.Text))
$Bills1000UAH_ResultTextbox.Text = (1000 * $($Bills1000UAH_NumberTextbox.Text))
# Overall Result
$overall = $(
[decimal]$($Bills1UAH_ResultTextbox.Text) +
[decimal]$($Bills2UAH_ResultTextbox.Text) +
[decimal]$($Bills5UAH_ResultTextbox.Text) +
[decimal]$($Bills10UAH_ResultTextbox.Text) +
[decimal]$($Bills20UAH_ResultTextbox.Text) +
[decimal]$($Bills50UAH_ResultTextbox.Text) +
[decimal]$($Bills100UAH_ResultTextbox.Text) +
[decimal]$($Bills200UAH_ResultTextbox.Text) +
[decimal]$($Bills500UAH_ResultTextbox.Text) +
[decimal]$($Bills1000UAH_ResultTextbox.Text)
)
$ResultLabel.Content = "Итоговая сумма:"
$ResultTextbox.Text = "$overall грн."
$ResultTextbox.Background = "LightGreen"
}
function fButtonClick {
fCalculateSumms
}
<########################
##### FUNCTIONS END #####
#########################
#### XAML GUI START #####
#########################>
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
[xml]$XAML = @" форма "@
<########################
##### XAML GUI END ######
#########################>
# Read XAML
$reader = (New-Object System.Xml.XmlNodeReader $XAML)
try{
$Form=[Windows.Markup.XamlReader]::Load( $reader )
}
catch{
Write-Warning $_.Exception
throw
}
# Store Form Objects In PowerShell
$allnewelements = @()
$xaml.SelectNodes("//*[@Name]") | ForEach-Object {Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name); $allnewelements += $_}
# Make DatePicker select today's date by default
$InkassDate.SelectedDate = [datetime]::Now
$button = $Form.FindName("FinalButton")
$button.Add_Click({ fButtonClick })
# Show Form SHOULD BE LAST ROW
$Form.ShowDialog() | Out-Null
# Get date with ukrainian month name in genitive case
if ($null -ne $($InkassDate.Text)) {
[int]$MonthNumber = $InkassDate.Text | Get-Date -Format "MM"
$MonthName = ([cultureinfo]::CreateSpecificCulture("uk-UA")).DateTimeFormat.MonthGenitiveNames[$($MonthNumber - 1)]
$UkrainianDateText = $InkassDate.Text | Get-Date -Format "dd $($MonthName) yyyy"
}
else {
$InkassDate.SelectedDate = [datetime]::Now
}
Контекст - на магазине продавец заполняет количество купюр по номиналу, еще пару полей, жмёт кнопку и печатаются 3 бумажки для инкассации по шаблону, используя введённые данные.
Цитата YuS_2:
Лучше заниматься редактированием в Visual Studio... »
|
Именно так я и делаю. Вот есть у меня 20 текстбоксов. И задал я для них свойство HorizontalContentAlignment="Center". А через 10 минут передумал и надо бы мне его убрать. На 20 текстбоксах вручную убирать? Работать то конечно будет, а если бы текстбоксов было 100? Вот для этого я и спрашивал о каком-нибудь механизм чтобы либо обернуть все текстбоксы во что-то и применить свойство единожды на родительский элемент или где-то рядом задать какой-нибудь шаблон стиля а потом применять к каждому текстбоксу использовать стиль такой-то. В общем механизм схожий с ID и class в CSS.
То же касается ивентов - каждый раз когда вводится что-то в колонку "количество" - сумма по этой банкноте и общая - должны пересчитываться, снова таки на каждый из 10 текстбоксов надо вручную дописать ивент.
Serguei Kouzmine, спасибо. Посмотрел, ничего не понял) Я пока что не понимаю как работают классы и что они вообще из себя представляют, поэтому эта часть кода для меня - черный ящик.
Буду пробовать методом тыка адаптировать под себя.