我試圖簡單地定義第二個堆棧面板(根堆棧面板內的兩個)的所有矩形元素的填充,需要的填充爲白色。由於一個stackpanel沒有ItemTemplate,我試着用它替換它,然後用ItemsControl封裝它。當我看到ItemsControl沒有Orientation屬性時,堆棧面板的封裝就變成了。將樣式應用於某個(指定)堆棧面板(或控制)的所有子元素
無論如何,畢竟這個孩子的矩形仍然沒有得到充滿白色...>。 <我在做什麼錯?我還試圖做與事件綁定一樣的事情,就像How to set an event function via a style?我仍然在嘗試那裏的事情,我以爲我想通過ItemControl最初做它,而不是工作,無論是ato:/不是我的一天)
<Window x:Class="RegenboogDragDrop.WindowRegenboog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WindowRegenboog" Height="350" Width="525">
<Window.Resources>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Height" Value="50"></Setter>
<Setter Property="Width" Value="50"></Setter>
<Setter Property="Margin" Value="5"></Setter>
<Setter Property="Stroke" Value="Black"></Setter>
<Setter Property="StrokeThickness" Value="3"></Setter>
</Style>
</Window.Resources>
<StackPanel>
<StackPanel Margin="0,50" Orientation="Horizontal" HorizontalAlignment="Center">
<Rectangle Fill="Yellow" MouseMove="Rectangle_MouseMove"></Rectangle>
<Rectangle Fill="Orange" MouseMove="Rectangle_MouseMove"></Rectangle>
<Rectangle Fill="Red" MouseMove="Rectangle_MouseMove"></Rectangle>
<Rectangle Fill="Blue" MouseMove="Rectangle_MouseMove"></Rectangle>
<Rectangle Fill="Green" MouseMove="Rectangle_MouseMove"></Rectangle>
<Rectangle Fill="Violet" MouseMove="Rectangle_MouseMove"></Rectangle>
<Rectangle Fill="Indigo" MouseMove="Rectangle_MouseMove"></Rectangle>
</StackPanel>
<ItemsControl Name="DropZone" HorizontalAlignment="Center">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<Rectangle Fill="White"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
<StackPanel Orientation="Horizontal">
<Rectangle Name="dropRed" Fill="White"/>
<Rectangle Name="dropOrange" MouseMove="Rectangle_MouseMove" DragDrop.DragEnter="Rectangle_DragEnter" DragDrop.DragLeave="Rectangle_DragLeave" DragDrop.Drop="Rectangle_Drop" AllowDrop="True"></Rectangle>
<Rectangle Name="dropYellow" Fill="White" MouseMove="Rectangle_MouseMove" DragDrop.DragEnter="Rectangle_DragEnter" DragDrop.DragLeave="Rectangle_DragLeave" DragDrop.Drop="Rectangle_Drop" AllowDrop="True"></Rectangle>
<Rectangle Name="dropGreen"></Rectangle>
<Rectangle Name="dropBlue"></Rectangle>
<Rectangle Name="dropIndigo"></Rectangle>
<Rectangle Name="dropViolet"></Rectangle>
</StackPanel>
</ItemsControl>
<Button Name="ButtonCheck" Content="Check volgorde" Margin="5,50"></Button>
</StackPanel>
代碼,如果你想嘗試一下後面:(在第二行的第三方可以接收通過拖放顏色,而第二個擁有所有的事件,但不需要填寫,我試圖讓它有)(DutchVarsTo英語:rechthoek意味着廣場,kleur指顏色,gesleepteKleur意味着draggedColor,睡眠指拖動):
https://defuse.ca/b/c19ncFwllWIpSRe6I0cclp(我想不出如何摺疊C#代碼片段就像JS這裏https://meta.stackexchange.com/questions/70885/collapse-code-snippets-in-answers片段:S左右引擎收錄鏈接到代碼隱藏)
一個優雅的解決方案,當我接受一個答案(然後我會有15個代表)時,我有一個優秀的解決方案,但是在這種情況下,我試圖學習如何做一件事(樣式子元素stackpanel),所以它對我來說是個黑客。我們可以想象有第三排盒子需要灰色填充(比方說,做一個反向彩虹)。我想知道如何在沒有黑客入侵的情況下(即,創建一個特殊的矩形子類型或在該範圍內的東西) – DeveloperDoge
不確定你的意思是「黑客」。爲了設計父元素的子元素的樣式,這是方法。否則,你將不得不在某些頂級資源字典中使用'x:Key'創建樣式,並明確地將它們分配給元素的'Style'屬性。 – Clemens
aaaah是的,我剛剛看到你的意思,你在StackPanel.Resources中做的!我如何在這裏使用BasedOn =「...」來融合上述風格。 – DeveloperDoge