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>