Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Обозначения параметров:
Name — название картины
Type — тип, 0 — фильм, 1 — сериал
Cost — суммарный бюджет
Dues — прибыль с кинопроката
DuesTV — прибыль с телевидения
DuesExtra — доп. прибыль (DVD, прокаты)
CinemaPart — доля кинотеатров от прибыли
DistrPart — доля дистрибьюторов
ООП? Нет, не слышал… Интересно, вы правда не понимаете, что это плохая модель предметной области?
А в остальном — как вам уже неоднократно сказали, для подобных задач используется группа шаблонов Separated Presentation.
С таким же успехом можно был использовать WinForms, зачем WPF без биндингов? И разметка тяжело читается, т.к. лапша.
Type — тип, 0 — фильм, 1 — сериал
private void movieList_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
if (((Movie)movieList.SelectedItem).Type == 0)
Type.Content = «Фильм»;
else
Type.Content = «Сериал»;
}
private void _save_Click(object sender, RoutedEventArgs e)
{
base.save(int.Parse(cost.Text), null, int.Parse(duesTV.Text),
int.Parse(duesExtra.Text), null, null);
}
public class RelayCommand : ICommand
{
#region Fields
readonly Action<object> _execute;
readonly Predicate<object> _canExecute;
#endregion // Fields
#region Constructors
/// <summary>
/// Creates a new command.
/// </summary>
/// <param name="execute">The execution logic.</param>
/// <param name="canExecute">The execution status logic.</param>
public RelayCommand(Action<object> execute, Predicate<object> canExecute = null)
{
if (execute == null)
throw new ArgumentNullException("execute");
_execute = execute;
_canExecute = canExecute;
}
#endregion // Constructors
#region ICommand Members
[DebuggerStepThrough]
public bool CanExecute(object parameter)
{
return _canExecute == null || _canExecute(parameter);
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public void Execute(object parameter)
{
_execute(parameter);
}
#endregion // ICommand Members
}
class ViewModel
{
public ICommand DigitButtonCommand
{
get;
}
public ViewModel()
{
DigitButtonCommand = new RelayCommand((arg) => { });
}
}
<Button Command="{Binding Path=DigitButtonCommand}" CommandParameter="7">7</Button>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ContentControl Grid.Column="0" Content="{Binding Path=Left}" />
<ContentControl Grid.Column="1" Content="{Binding Path=Center}" />
<ContentControl Grid.Column="2" Content="{Binding Path=Right}" />
</Grid>
<DataTemplate DataType="{x:Type vm:MainButtonsViewModel}">
<vw:MainButtons/>
</DataTemplate>
/// <summary>
/// Get or set left panel.
/// </summary>
public object Left
{
get
{
return _left;
}
set
{
_left = value;
OnPropertyChanged();
}
}
/// <summary>
/// Get or set center panel.
/// </summary>
public object Center
{
get
{
return _center;
}
set
{
_center = value;
OnPropertyChanged();
}
}
/// <summary>
/// Get or set right panel.
/// </summary>
public object Right
{
get
{
return _right;
}
set
{
_right = value;
OnPropertyChanged();
}
}
Проектирование идентичных форм в WPF с применением абстрактных классов