0
如果我創建一個簡單的StackPanel
和放置一些物品,並定義樣式增加利潤,一切運作良好,通過這個簡單的例子作爲證明:問題設置的StackPanel元素樣式當一個ItemsControl
<StackPanel Grid.Row="1" Orientation="Vertical">
<StackPanel.Resources>
<Style TargetType="module:ModuleElement">
<Setter Property="Margin" Value="20"/>
</Style>
</StackPanel.Resources>
<module:ModuleElement/>
<module:ModuleElement/>
</StackPanel>
顯然module:ModuleElement
是我的UserControl
,但問題仍然存在,如果我使用默認控件,如典型的Button
。
但是,我不想只是一個StackPanel
- 我想要一個ItemsControl
。所以我定義了我的控件:
<ItemsControl Grid.Row="1" Margin="20,0,20,0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical">
<StackPanel.Resources>
<Style TargetType="module:ModuleElement">
<Setter Property="Margin" Value="0,20,0,0"/>
</Style>
</StackPanel.Resources>
</StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Items>
<module:ModuleElement/>
<module:ModuleElement/>
</ItemsControl.Items>
</ItemsControl>
上面代碼中添加的幾項是用於測試目的 - 在這種情況下,邊距是默認值(0)。
發生了什麼事?爲什麼這不起作用?我需要做些什麼來解決這個問題?我當然可以爲每個元素手動設置邊距,但我覺得我錯過了一些東西,寧可看到它定義在Style
...
雖然這確實有效(我肯定會投票),但這並不能真正解釋問題。我的代碼基於類似的場景,而不是'StackPanel',我使用了'WrapPanel',在這種情況下,我的解決方案(將'Resource'放在'WrapPanel'定義中)工作,所以.. 。爲什麼它現在工作而不是現在? – Shaamaan
你是指一個WrapPanel作爲ItemsControl中的ItemsPanel?這確實很奇怪。 – Clemens
是的,確切地說。代碼適用於這種情況。除非我很幸運,否則'WrapPanel'應該不會起作用。 ; P – Shaamaan