Имеется 10 изображений в окне без рамки WPF формы. Как мне их разместить так, чтобы можно было из другой формы растягивать сразу все изображения сохраняя их пропорции? Во второй форме два слайдера, которыми растягиваем первую форму и что бы изображения так же растягивались?
Можно сделать так:
1) Для отображения списка картинок воспользуемся элементом ListBox
.
2) Что бы область просмотра каждой картинки была одинаковой у элемента ListBox
переопределяем ItemsPanel
и в качестве панели устанавливаем UniformGrid
.
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="2" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
3) Далее определяем шаблон для отображения каждого элемента списка. Так как нам нужно отображать картинки используем элемент Image
. Кроме того, что бы они растягивались пропорционально создаем стиль для них в ресурсах окна.
<Window.Resources>
<!-- Что бы картинки растягивались пропорционально -->
<Style x:Key="ImageStyle"
TargetType="Image">
<Setter Property="Stretch" Value="Uniform" />
</Style>
</Window.Resources>
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<Border>
<Image Source="{Binding Path}"
Style="{StaticResource ImageStyle}" />
</Border>
</DataTemplate>
</ListBox>
4) Что бы картинки занимали всю выделенную для них область устанавливаем свойства ListBox.HorizontalContentAlignment
и ListBox.VerticalContentAlignment
в значение Stretch
, а так же отключаем вертикальный и горизонтальный ScrollBar.
<ListBox HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
ItemsSource="{Binding Images}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Disabled">
</ListBox>
5) Собираем то что сделали вместе.
<Window x:Class="WpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.Resources>
<!-- Что бы картинки растягивались пропорционально -->
<Style x:Key="ImageStyle"
TargetType="Image">
<Setter Property="Stretch" Value="Uniform" />
</Style>
</Window.Resources>
<Grid>
<ListBox HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
ItemsSource="{Binding Images}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<Border>
<Image Source="{Binding Path}"
Style="{StaticResource ImageStyle}" />
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="2" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</Grid>
</Window>
Далее во ViewModel заполняем нашу коллекцию картинок данными.
public class MainViewModel : ViewModelBase
{
public ObservableCollection<MyImg> Images { get; }
public MainViewModel()
{
Images = new ObservableCollection<MyImg>();
// Заполняем данными коллекцию...
}
}
// Класс, который представляет нашу картинку.
public class MyImg
{
public string Path { get; set; }
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как в переменную записать результат быстрейшего метода(два раза вызывается один метод с разными передаваемыми значениями, нужен результат...
С WebControl было то же самое, пока я не вставил его на формуЯ так понимаю, что он отключен, пока не находится на форме
andreycha почему то пометил предыдущую мою тему как дубликат, хотя решения в "ориджинал" теме для своей проблемы я не нашёл, вроде бы другая ситуация,...
ЗдавствуйтеПодскажите, пожалуйста, как сделать диалоговое окно куда пользователь мог бы вводить только числа с клавиатуры?