[英]UWP ItemsControl content not stretching as in WPF
我在UWP項目中遇到一些我無法理解的行為,但是我在WPF中的實現卻按預期工作。
如果我有一個StackPanel,並插入了一些網格,則網格將按預期的方式拉伸以填充StackPanel的寬度。
<StackPanel Grid.Row="1">
<Grid Background="Blue">
<TextBlock>Item 1</TextBlock>
</Grid>
<Grid Background="Green">
<TextBlock>Item 2</TextBlock>
</Grid>
<Grid Background="Red">
<TextBlock>Item 3</TextBlock>
</Grid>
<Grid Background="Pink">
<TextBlock>Item 4</TextBlock>
</Grid>
</StackPanel>
但是,一旦嘗試引入綁定和集合,此行為就會停止。
<ItemsControl ItemsSource="{Binding Devices}" Grid.Row="1">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Background="Violet">
<TextBlock>Hello</TextBlock>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我發現類似的問題可以追溯到2010年,但是到目前為止,所有解決方案都沒有起作用。 我還發現此處報告的普遍用於UWP Grid的問題已在其他上下文中使用。 我嘗試過使用ListBox(在這方面的行為相同),設置HorizontalContentAlignment,使用樣式,因為Silverlight用戶似乎在這樣做時感到很高興,並且更改了我表達ItemsControl的方式。 到目前為止,沒有任何工作,而且我感覺UWP中的XAML出了點問題,因為我似乎在WPF中完全沒有遇到任何問題。 是否存在已知問題,還是我只是以錯誤的方式進行操作?
我只是希望子網格可以拉伸以水平填充。 我應該提一下:
如果將網格包裝在ViewBox中,它的確起作用,但是這是不理想的,因為它還有其他不利影響。
如果我單擊XAML中層次結構下的所有內容(從ItemsControl開始),則圍繞此選擇呈現的框將一直保持全寬,直到(不包括)DataTemplate。 DataTemplate和Grid顯示一個緊密綁定的框,但是如果我在屬性檢查器中查看,則Grid的水平對齊方式是拉伸。 這使我相信DataTemplate用沒有HorizontalAlignment =“ Stretch”的東西包裝了網格,並且我不知道改變它的機制。
這種現象似乎只出現在Visual Studio和Expression Blend的設計器中。 一旦在Phone和Desktop上構建並執行,所有內容似乎都可以正確呈現。
我通常在設計師方面有很好的經驗,沒想到會是這種情況。 如果我只是忽略了設計師並取得了進步,我會早日意識到這一點。 我已經通過VisualStudio反饋工具報告了此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.