Używam ItemsControl, gdzie ItemsPanel jest ustawiona na płótnie (zobacz this pytanie więcej informacji w tle). ItemsControl wykonuje jak chcę, i to działa jak czar podczas dodawania element podrzędny ręcznie przez wprowadzenie go do ItemsControl.Items:Podczas korzystania z ItemsControl ItemsControl.ItemsPanel jest ustawiona na Canvas, ContenPresenter przychodzi i podział moje właściwości Canvas na dzieciach [WPF]
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Items>
<Button Canvas.Left="500" Content="Button Text" />
</ItemsControl.Items>
</ItemsControl>
Uwaga własnością Canvas.Left na przycisku. Działa to jak czar, a przycisk znajduje się 500 pikseli od lewej strony lewej strony ItemsControl. Wspaniały!
jednak, gdy jestem definiowania ItemsSource wiązania do wykazu, Canvas.left nie ma żadnego wpływu:
<ItemsControl ItemsSource="{Binding Elements}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Canvas.Left="500" Content="Button Text" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
sprawdzając w czasie wykonywania aplikacji, widzę jedną różnicę. Kontener ContentPresenter został dodany między płótnem a przyciskiem.
Jak ustawić właściwość Canvas.Left w samym programie ContentPresenter? Czy istnieje inny sposób rozwiązania tego problemu?
Dziękuję wszystkim!
wydaje się dziwne, ale ten pracował dla mnie. – bryanbcook
Możesz również powiązać wartość w ItemContainerStyle i użyje tego samego przedmiotu, którego DataTemplate używa jako źródła. :-) –
Jesteś moim bohaterem dzisiaj. Dziękuję. –