Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/55: Рейтинг темы: голосов - 55, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 50
1

Элементы перекрывают друг друга

21.04.2014, 14:58. Показов 11050. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть DockPanel в ней 3 элемента Image StackPanel Image. При уменьшении окна StacPanel перекрывается Image'ами а Image друг другом не перекрываются. Я хочу чтобы ни один из элементов не мог перекрыть другой. Установил каждому минимальные значения ширины 256, но проблема по прежнему осталась.
C#
1
2
3
4
5
6
7
8
  
<Image DockPanel.Dock="Left"   Source="C:\Users\ryjenkov\Desktopовая папка\IMAGES\1 floor1.png" MinWidth="256" />
<Image  DockPanel.Dock="Right"    Source="C:\Users\ryjenkov\Desktopовая папка\IMAGES\1 floor1.png" HorizontalAlignment="Right" MinWidth="256" />
 
 
<StackPanel  DockPanel.Dock="Top" x:Name="StackPanel1" Height="296"  MinWidth="256">
...
  </StackPanel>
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2014, 14:58
Ответы с готовыми решениями:

Сделать, чтобы элементы Canvas не накладывались друг на друга
Доброго времени суток, хотел узнать если у Canvas какой нибудь параметр который , обрезает дочернии...

Кнопки накладываются друг на друга
&lt;StackPanel&gt; &lt;Grid&gt; &lt;Grid.ColumnDefinitions&gt; ...

Проверка положения объектов относительно друг друга (соприкосновение)
пыф-пыф, жарко... Скажите, а вот возможно или нет: &quot;Проверка положения обЪектов&quot;, я хочу...

В StatusBar постоянно происходят наложение элементов друг на друга
Не могу разобраться с WPF, в stusbar постоянно происходят наложение элементов друг на друга,...

11
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
21.04.2014, 15:05 2
Либо Ваши элементы должны менять свой размер, либо запрещайте делать форму меньше определённого размера...

Добавлено через 39 секунд
Первый вариант правильнее с точки зрения "резинового" интерфейса, который присущ WPF приложениям
1
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 50
21.04.2014, 15:08  [ТС] 3
Изменение размера как можно реализовать? Правый Image меняет свой размер( в то время как левый нет), и при этом не закрывает Image а вот StackPanel он закрывает(когда тяну за правую сторону окна).
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
21.04.2014, 15:12 4
Настолько ли Вам сдался DockPanel? Как я понимаю, тут табличка из 2-х колонок и 2-х строчек, из которых верхняя строка объединённая, куда уместнее будет Grid использовать.
1
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 50
21.04.2014, 15:22  [ТС] 5
Немного не понял о чем вы.
Если Вы про весь интерфейс то он у меня состоит из Grid в котором 2 строчки. В верхней строчке вставлена Dockpanel в котором 3 элемента. Использую DockPanel потому что хочу избежать пустого места(визуально серых прямоугольников). А если использовать Grid то не получится сделать 3 колонки с плавающими полями.
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
21.04.2014, 15:56 6
Лучший ответ Сообщение было отмечено Grawerman как решение

Решение

Цитата Сообщение от Grawerman Посмотреть сообщение
А если использовать Grid то не получится сделать 3 колонки с плавающими полями.
Так, Вам нужно 3 колонки, где центральная часть, допустим, как некая менюшка...
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Image Grid.Column="0" Source="left.png" />
        <Image Grid.Column="2" Source="right.png" />
        <StackPanel Grid.Column="1">
            <Button Content="button1" />
            <Button Content="button1" />
            <Button Content="button1" />
            <Button Content="button1" />
        </StackPanel>
    </Grid>
Миниатюры
Элементы перекрывают друг друга  
1
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 50
21.04.2014, 16:23  [ТС] 7
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<Grid  Grid.Row="0">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition MinWidth="160" MaxWidth="160"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Image Grid.Column="0"    Source="C:\Users\ryjenkov\Desktop\Новая папка\IMAGES\1 floor1.png" />
            <StackPanel Grid.Column="1" x:Name="StackPanel1" Height="350" Margin="0,3,0,0" VerticalAlignment="Top" HorizontalAlignment="Center" MinWidth="160" >
 
                <Image Source="C:\Users\ryjenkov\Desktop\Новая папка\Выставка\1920x1080\IMAGES\power_gr.png" Height="63" Width="159" VerticalAlignment="Top" />
                <Label HorizontalContentAlignment="Center" Content="16:40" VerticalAlignment="Top" FontSize="20"/>
                <Label HorizontalContentAlignment="Center" Content="12 Марта" VerticalAlignment="Top" FontSize="20"/>
                <!--Region Переключение Картинок -->
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top">
                    <Button DockPanel.Dock="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" HorizontalAlignment="Left" MinWidth="30" MinHeight="30" Click="Button_Click">
                        <Button.Foreground>
                            <ImageBrush ImageSource="C:\Users\ryjenkov\Desktop\Новая папка\Выставка\1920x1080\IMAGES\left.png"/>
                        </Button.Foreground>
                    </Button>
                    <Label Content="Ручной" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="20"/>
                    <Button   HorizontalContentAlignment="Center" VerticalContentAlignment="Center" HorizontalAlignment="Right" MinWidth="30" MinHeight="30" RenderTransformOrigin="6.816,0.191" Click="Button_Click_1">
                        <Button.Foreground>
                            <ImageBrush ImageSource="C:\Users\ryjenkov\Desktop\Новая папка\Выставка\1920x1080\IMAGES\left_Gray.png"/>
                        </Button.Foreground>
                    </Button>
 
                </StackPanel>
                <!--Endregion-->
                <DockPanel ScrollViewer.CanContentScroll="True" Height="43">
                    <Image x:Name="Alarm" DockPanel.Dock="Left" Source="C:\Users\ryjenkov\Desktop\Новая папка\Выставка\1920x1080\IMAGES\1394430259_iwarning.png"   />
                    <Label DockPanel.Dock="Right" Content="Авария" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" FontSize="20" HorizontalAlignment="Left" />
                </DockPanel>
 
            </StackPanel>
            <Image Grid.Column="3" DockPanel.Dock="Right"  Margin="0,0,0,0"  Source="C:\Users\ryjenkov\Desktop\Новая папка\IMAGES\1 floor1.png" />
 
        </Grid>
То что нужно. Спасибо.

Может еще подскажите как сделать кнопку по центру с учетом того что она не лижет в таблице и должна масштабироваться вместе с окном?
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
21.04.2014, 16:27 8
Внутри StackPanel с масштабированием всё довольно печально... либо будет хитрая система Binding, либо проще пересмотреть необходимость класть кнопку в эту панель.
1
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 50
21.04.2014, 16:42  [ТС] 9
Немного не поняли меня. Выше представленный код это то что лежит в таблице из 2 строк в 0 строке. Есть еще TabControl который лежит в 1 строке. И вот поверх этой таблицы должна быть хитрющая круговая система кнопок которую в коде я уже сделал, осталось только поместить кнопку в центр экрана так чтобы она масштабировалась.
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
21.04.2014, 17:07 10
Делаем глобальный Grid, кладём обе существующих таблицы в него. тот, что будет вторым, окажется поверх предыдущей таблицы (ну или Panel.ZIndex ещё есть свойство)
XML
1
2
3
4
5
6
7
8
<Grid>
        <Grid>
            <Button Content="Кнопка 1" FontSize="50" />
        </Grid>
        <Grid Opacity=".5">
            <TextBox Text="Текстовое поле" FontSize="50" />
        </Grid>
    </Grid>
За полупрозрачным гридом с текстовым полем виден грид с кнопкой...

Добавлено через 14 секунд
Делаем глобальный Grid, кладём обе существующих таблицы в него. тот, что будет вторым, окажется поверх предыдущей таблицы (ну или Panel.ZIndex ещё есть свойство)
XML
1
2
3
4
5
6
7
8
<Grid>
        <Grid>
            <Button Content="Кнопка 1" FontSize="50" />
        </Grid>
        <Grid Opacity=".5">
            <TextBox Text="Текстовое поле" FontSize="50" />
        </Grid>
    </Grid>
За полупрозрачным гридом с текстовым полем виден грид с кнопкой...
1
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 50
21.04.2014, 17:36  [ТС] 11
Хм, я кажется начинаю понимать шутки про магию, когда я так пытался сделать у меня вылезала ошибка о том что Window не может содержать больше одного Grid.
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
22.04.2014, 12:36 12
Цитата Сообщение от Grawerman Посмотреть сообщение
Window не может содержать больше одного Grid
В окне - только один Grid, а в нём - другие, причём сколько угодно. Не забудьте прописать определения строк и столбцов.
Проверьте расположение элементов друг относительно друга.
0
22.04.2014, 12:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2014, 12:36
Помогаю со студенческими работами здесь

При использовании в TextBlock'е малых шрифтов (менее 0.1) буквы начинают наезжать друг на друга
При использовании в TextBlock'е малых шрифтов (менее 0.1) буквы начинают наезжать друг на друга...

Наложение аудиофайлов друг на друга
Доброго времени суток. Есть задача - наложить один аудиофайл (шум) на другой с помощью C#, а затем...

Как наложить два изображения друг на друга?
Существует ли возможность ... и если да то как наложить две картинки друг на друга???? Одна...

Соединение COM портов. Подключения создаются, но сервер и клиент друг друга не видят
имеется класс с методами подключения: using System; using System.Text; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru