Veri bağlama özelliğini kullanarak Canvas'da görüntülemek istediğim öğeler listesi var.İç Bağlama yoluyla Tuval'te öğeler nasıl görüntülenir
ItemsToShowInCanvas = new ObservableCollection<ItemDetail>
{
new ItemDetail {Text = "ABC", Top = 10, Left = 200},
new ItemDetail {Text = "DEF", Top = 100, Left = 300},
new ItemDetail {Text = "PQR", Top = 50, Left = 150}
};
ItemDetail Metin oto özelliklere sahip basit bir sınıftır, Üst ve Sol ı öğeleri databind, onlar tuvalinde görünüyor
public class ItemDetail
{
public string Text { get; set; }
public double Top { get; set; }
public double Left { get; set; }
}
değer verir. Ancak öğeler, Üst ve Sol özellikleri kullanılarak belirtilen konumlarda görünmez.
<Canvas>
<ItemsControl ItemsSource="{Binding Path=ItemsToShowInCanvas}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Text}" Canvas.Top="{Binding Path=Top}" Canvas.Left="{Binding Path=Left}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Canvas>
ItemsControl
TextBlock
bağlayan varsayılan itemspanel olarak stackpanel kullanır ayarlayın. eklediğiniz textblock aslında bir yığın kağıdına ekleniyor ama tuvalete eklemiyor. ItemsControl tuvale ekliyor. – Bathinenituval için itemspanel değiştirmeyi deneyin Cevabı bathineni için teşekkürler. ItemsPanel'ı Canvas olarak koymaya çalıştım ama işe yaramadı. Öğeler diğerinin üzerinde göstermeye başladı. ItemContainerStyle eklendiğinde çalıştı. –
olası kopyası [WPF: Bir Canvas'ın Çocuk XAML'deki özelliğini bağlamak mümkün mü?] (Http://stackoverflow.com/questions/889825/wpf-is-it-possible-to-bind-a-canvass-children -property-in-xaml) –