Binding canvas в Silverlight 4 (баг №3)

Продолжение статьи Silverlight 4 баг за багом

Описание проблемы:

У меня была задача, построить элементы на панеле canvas. У меня была Source котороый хранил кординаты элементов и их нужно было отобразить на экране с помощью Canvas.SetLeft и Canvas.SetTop – увы это не работает.

Решение проблемы:
Решение нашел Mikle. Решение довольно простое, использовать TranslateTransform вместо позиционирования канваса.
В итоге получился такой код:

<ItemsControl ItemsSource="{Binding Table}">
    <ItemsControl.ItemsPanel>
	<ItemsPanelTemplate>
	    <Canvas Margin="10" Background="AliceBlue"   Width="300" Height="300" />
	</ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
	<DataTemplate>
	    <Border MouseLeftButtonDown="Border_MouseLeftButtonDown">
		<StackPanel>
		    <TextBox Text="{Binding x, Mode=TwoWay}">
			<TextBox.RenderTransform>
			    <TranslateTransform X="{Binding x, Mode=TwoWay}" Y="{Binding y, Mode=TwoWay}"/>
			</TextBox.RenderTransform>
		    </TextBox>
		</StackPanel>
	    </Border>
	</DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Добавить комментарий

Fill in your details below or click an icon to log in:

Логотип WordPress.com

You are commenting using your WordPress.com account. Log Out / Изменить )

Фотография Twitter

You are commenting using your Twitter account. Log Out / Изменить )

Фотография Facebook

You are commenting using your Facebook account. Log Out / Изменить )

Connecting to %s

Follow

Get every new post delivered to your Inbox.