我試圖用WPF中的可移動/可調整大小的部件實現圖。 我想使用ItemsControl和ItemsPanel配置爲「DynamicCanvas」。 您現在需要了解DynamicCanvas的所有信息,它的作用類似於通常的畫布 - 除了一個例外 - 它利用附加屬性來存儲有關其子項X,Y屬性的信息。ItemsControl和控件附加屬性
我的代碼:
<ItemsControl IsTabStop="False" ItemsSource="{Binding ElementName=comboBox1,Path=SelectedItem.Source.Table}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<s:TableControl Table="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemContainerStyle>
<Style>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<!--<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">-->
<c:DynamicCanvas SizeHeightToContent="True" SizeWidthToContent="True" ClipToBounds="True" SnapsToDevicePixels="True" PreviewMouseDown="Canvas_MouseDown" IsHitTestVisible="True" Background="Gray" >
</c:DynamicCanvas>
<!--</ScrollViewer>-->
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
正在上DynamicCanvas顯示的控件是我的自定義類型(以下只有最重要的組成部分):
<ContentControl x:Class="SubiektCommerceSynchro.ViewModel.TableControl"
c:DynamicCanvas.Left="{Binding X,Mode=TwoWay}"
c:DynamicCanvas.Top="{Binding Y,Mode=TwoWay}"
Width="450" Height="300"
></ContentControl>
現在的問題和問題:
此處不起作用的部分是附加屬性c:DynamicCanvas.Left(Top)。 讓我們把它放在步驟:
1)DynamicCanvas預計其直接孩子有C:DynamicCanvas.Left和c:DynamicCanvas.Top定義
2)ItemsPanel投入到DynamicCanvas TableControls時,它們封裝在某種容器
3)DynamicCanvas在其直接子節點上看不到附加屬性=>將它們視爲定位在(0,0)處並使它們有效地無法移動。
我該如何解決這個問題?
我不知道爲什麼,但我沒有看到你的答案。我自己找到了這個,甚至在下面寫了一篇關於它的評論。儘管如此,謝謝。 – kubal5003