powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Центровать рисунок на Canvas
1 сообщений из 1, страница 1 из 1
Центровать рисунок на Canvas
    #36471958
ifndef
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итак, пишем приложение на WPF

Есть примерно такой класс:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
class Circle
{
    public double X {get;set;}
    public double Y {get;set;}
    public double Diameter {get;set;}
    public static double Height {get;set;}
    public static double Width {get;set;}
}

Есть список объектов этого класса. И хочется их отобразить в виде собственно кружочков, причем так, чтобы весь получившийся рисунок оказался в центре отведенной ему области. Используем для этого класс ListBox и задаем ему вот такой темплейт:

Код: plaintext
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.
<ControlTemplate TargetType="{x:Type ListBoxItem}">
	<Canvas x:Name="canvas">
		<Canvas.Resources>
			<conv:TranslateConverter x:Key="TranslateConverter" />
		</Canvas.Resources>

		<Ellipse
			Width="{Binding Diameter}"
			Height="{Binding Diameter}"
			Stroke="Azure"
			Fill="Transparent"
			StrokeThickness="2"
		>
			<Canvas.Left>
				<MultiBinding Converter="{StaticResource TranslateConverter}">
					<Binding ElementName="canvas" Path="ActualWidth" />
					<Binding Path="Width" />
					<Binding Path="Diameter" />
					<Binding Path="X" />
				</MultiBinding>
			</Canvas.Left>

			<Canvas.Top>
				<MultiBinding Converter="{StaticResource TranslateConverter}">
					<Binding ElementName="canvas" Path="ActualHeight" />
					<Binding Path="Height" />
					<Binding Path="Diameter" />
					<Binding Path="Y" />
				</MultiBinding>
			</Canvas.Top>
		</Ellipse>		
	</Canvas>
</ControlTemplate>

Конвертер под названием TranslateConverter как раз и сдвигает наш кружочек на нужное место (в зависимости от размеров канваса и всего рисунка).

И тут возникает проблема. По оси X все сдвигается нормально, а по Y нет, потому что ActualHeight всегда приходит равным 0. Если задать Height и Width канваса прямо в разметке, все работает. Более того, ActualWidth тоже какое-то время назад приходил только нулевой, а потом почему-то перестал.

Кто знает, поделитесь решением проблемы.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Центровать рисунок на Canvas
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]