у меня приложение работает с несколькими объектами, которые все имеют обшего предка. эти объекты в процессе работы меняют своё состояние, я это вывожу на окно. Но получится очень много дублирующего кода. Код. Если состояние изменилось, обновить инфу на экране Код | private void OnStrategyPropertyChangedB(object sender, PropertyChangedEventArgs e) { Strategy strategy = (Strategy) sender; this.GuiAsync(() => { this.B_Cons_Status.Content = strategy.ProcessState; this.B_Cons_Position.Content = strategy.PositionManager.Position; this.B_Cons_ID.Content = strategy.Id; }); } private void OnStrategyPropertyChangedS(object sender, PropertyChangedEventArgs e) { Strategy strategy = (Strategy) sender; this.GuiAsync(() => { this.S_Cons_Status.Content = strategy.ProcessState; this.S_Cons_Position.Content = strategy.PositionManager.Position; this.S_Cons_ID.Content = strategy.Id; }); }
|
Отображение на экране Код | <Grid Margin="0,20,0,0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="120" /> <ColumnDefinition Width="120" /> <ColumnDefinition Width="120" /> <ColumnDefinition Width="120" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Label Content="Статус:" Grid.Row="0" Grid.Column="1" /> <Label x:Name="B_Cons_Status" Grid.Row="0" Grid.Column="2" /> <Label Content="Позиция:" Grid.Row="3" Grid.Column="1" /> <Label x:Name="B_Cons_Position" Grid.Row="3" Grid.Column="2" /> <Label Content="ID:" Grid.Row="5" Grid.Column="1" /> <Label x:Name="B_Cons_ID" Grid.Row="5" Grid.Column="2" /> </Grid>
<Grid Margin="0,20,0,0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="120" /> <ColumnDefinition Width="120" /> <ColumnDefinition Width="120" /> <ColumnDefinition Width="120" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Label Content="Статус:" Grid.Row="0" Grid.Column="1" /> <Label x:Name="S_Cons_Status" Grid.Row="0" Grid.Column="2" /> <Label Content="Позиция:" Grid.Row="3" Grid.Column="1" /> <Label x:Name="S_Cons_Position" Grid.Row="3" Grid.Column="2" /> <Label Content="ID:" Grid.Row="5" Grid.Column="1" /> <Label x:Name="S_Cons_ID" Grid.Row="5" Grid.Column="2" /> </Grid>
|
Как видите, код почти одинаковый, кроме название Label, для отображения информации. И обекты в методы, предназначенный для обработки событий одного типа. Можно ли как-то избавится от такого дублирования кода? Мне нужно ещё 4 таких же блока, и это будет совсем некрасиво и грязно.
|