Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Binding canvas


Автор: DenWPF 31.5.2011, 14:49
silverlight 4

Код

                <Canvas Margin="10" 
                Background="AliceBlue"   Width="300" Height="300">
                    <ItemsControl ItemsSource="{Binding Table}">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <Border Canvas.Left="{Binding x}" MouseLeftButtonDown="Border_MouseLeftButtonDown">
                                    <StackPanel>
                                        <TextBox Text="{Binding x}"/>
                                   

                                    </StackPanel>
                                </Border>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </Canvas>


TextBox - показывает число, но вот смещение не идет.

Автор: -Mikle- 2.6.2011, 06:16
А по какой причине оно должно быть? В ItemsControl по умолчанию для позиционирования элементов StackPanel используется. Если хочешь абсолютное позиционирование айтемов, то поставь канвас в качестве панели
Код

<ItemsControl>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

Тогда у тебя все айтемы будут с абсолютным позиционированием, это раз. Во вторых, ты используешь DataTemplate, содержимое которого в визуальном дереве ложится в ContentPresenter. В общем мне не понятна задача, чтоб что-то говорить.

Автор: DenWPF 2.6.2011, 15:24
у меня в базе хранятся кординаты х y. и размер.
вот нужно забиндить и нарисовать их на канвасе.

Автор: -Mikle- 3.6.2011, 06:23
Код

            <ItemsControl ItemsSource="{Binding SomeItems}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Name}">
                            <TextBlock.RenderTransform>
                                <TranslateTransform X="{Binding X}" Y="{Binding Y}"/>
                            </TextBlock.RenderTransform>
                        </TextBlock>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>


Добавлено через 1 минуту и 16 секунд
Можно еще сделать свою панель, наследовавшись от Canvas и там реализовать нужную логику расположения.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)