Пользователям из интерфейса предлагается выбрать отступы для окна:
<TextBlock Grid.Row="7" Grid.Column="0" HorizontalAlignment="Right" Style="{DynamicResource TextBlockDetailsStyle}" Text="Отступ слева" Visibility="{Binding IsEmpty, Converter={StaticResource InversedBoolToVisibilityConverter}}" />
<extToolkit:IntegerUpDown Grid.Row="7" Grid.Column="1" Margin="2" Maximum="100" Minimum="0" Value="{Binding MarginLeft, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding IsEmpty, Converter={StaticResource InversedBoolToVisibilityConverter}}" />
<TextBlock Grid.Row="8" Grid.Column="0" HorizontalAlignment="Right" Style="{DynamicResource TextBlockDetailsStyle}" Text="Отступ сверху" Visibility="{Binding IsEmpty, Converter={StaticResource InversedBoolToVisibilityConverter}}" />
<extToolkit:IntegerUpDown Grid.Row="8" Grid.Column="1" Margin="2" Maximum="100" Minimum="0" Value="{Binding MarginTop, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding IsEmpty, Converter={StaticResource InversedBoolToVisibilityConverter}}" />
<TextBlock Grid.Row="9" Grid.Column="0" HorizontalAlignment="Right" Style="{DynamicResource TextBlockDetailsStyle}" Text="Отступ справа" Visibility="{Binding IsEmpty, Converter={StaticResource InversedBoolToVisibilityConverter}}" />
<extToolkit:IntegerUpDown Grid.Row="9" Grid.Column="1" Margin="2" Maximum="100" Minimum="0" Value="{Binding MarginRight, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding IsEmpty, Converter={StaticResource InversedBoolToVisibilityConverter}}" />
<TextBlock Grid.Row="10" Grid.Column="0" HorizontalAlignment="Right" Style="{DynamicResource TextBlockDetailsStyle}" Text="Отступ снизу" Visibility="{Binding IsEmpty, Converter={StaticResource InversedBoolToVisibilityConverter}}" />
<extToolkit:IntegerUpDown Grid.Row="10" Grid.Column="1" Margin="2" Maximum="100" Minimum="0" Value="{Binding MarginDown, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding IsEmpty, Converter={StaticResource InversedBoolToVisibilityConverter}}" />
Как лучше связать MarginLeft, MarginTop и.т.д со свойством Margin. Не напишешь же Margin = "{Binding MarginLeft} {Binding MarginTop} {Binding MarginRight} {Binding MarginDown}"
Напишите такой мультиконвертер:
class MarginConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var left = (int)values[0];
var top = (int)values[1];
var right = (int)values[2];
var bottom = (int)values[3];
return new Thickness(left, top, right, bottom);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
И используйте:
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<UniformGrid Columns="2">
<TextBlock Text="Слева:"/>
<TextBox Text="{Binding Left}"/>
<TextBlock Text="Сверху:"/>
<TextBox Text="{Binding Top}"/>
<TextBlock Text="Справа:"/>
<TextBox Text="{Binding Right}"/>
<TextBlock Text="Снизу:"/>
<TextBox Text="{Binding Bottom}"/>
</UniformGrid>
<Border Grid.Row="10" BorderThickness="1" BorderBrush="Red">
<Border.Resources>
<c:MarginConverter x:Key="conv"/>
</Border.Resources>
<Border BorderBrush="Green" BorderThickness="1">
<Border.Margin>
<MultiBinding Converter="{StaticResource conv}">
<Binding Path="Left"/>
<Binding Path="Top"/>
<Binding Path="Right"/>
<Binding Path="Bottom"/>
</MultiBinding>
</Border.Margin>
</Border>
</Border>
</Grid>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Благодаря VladD, который ответил мне в прошлый раз здесь - Проигрывание анимации из фонового потока , а также куче различных тем на других форумах,...
Здравствуйте, как правильно открывать файл в pictureBox и правильно закрывать его для перезаписывания файла