я в настоящее время пытаюсь связать коллекцию объектов на холст в Silverlight 3 с помощью ItemsControl, как показано ниже:Silverlight 3 - Привязка данные Положения прямоугольника на холсте
<ItemsControl x:Name="ctrl" ItemsSource="{Binding myObjectsCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas></Canvas>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Stroke="LightGray" Fill="Black" StrokeThickness="2"
RadiusX="15" RadiusY="15" Canvas.Left="{Binding XAxis}"
Height="25" Width="25">
</Rectangle>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
К сожалению, кажется обязательным Canvas.Left игнорируется. Из того, что я узнал here, похоже, это связано с тем, что элементы размещены внутри медиа-презентатора, а не фактическое холст, указанный мной на панели элементов.
Есть ли способ, которым я могу использовать привязку данных для определения положения элементов на холсте?
К сожалению, свойство Left - только для чтения и не может быть установлено. – Blounty
Я не знаю, почему он доступен только для чтения. В любом случае мне удалось сделать эту работу, используя конвертер значений: , но это, безусловно, не изящное решение. –
Mart
Как работает LeftMarginConverter, и когда он применяется, - это маржа, применяемая ко всем связанным элементам относительно левого края контейнера? – Blounty