我已經設定了一個ListBoxwhere the items are another ListBox。這允許我系結一個包含串列的可觀察集合。
我使用水平StackPanel作為ItemsPanelTemplate第二個ListBox,但它很難看,所以我嘗試使用 aGrid代替(目前我固定了列數以測驗一切是否正常)。
一切都在正確的單元格中,但看起來SharedSizeGroup沒有考慮到,我想要的是相同列的單元格具有相同的寬度(最寬的元素之一)
查看我的 XAML 代碼發生的情況的圖片:

以及我想要達到的目標

我認為我沒有將其放置Grid.IsSharedSizeScope="True"到正確的位置,或者我做錯了其他事情。
我知道這看起來像DataGrid現在,但在下一步中,某些行可能沒有相同數量的專案。
XAML 代碼
<ListBox Grid.Row="1" ItemsSource="{Binding LibraryGroupedValuesList}"
SelectedItem="{Binding SelectedGroupedValues}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Position}" VerticalAlignment="Center">
</TextBlock>
<ListBox Grid.IsSharedSizeScope="True" Grid.Column="1" ItemsSource="{Binding PositionValues}"
ItemTemplateSelector="{StaticResource VariableTypeTemplateSelector}"
HorizontalContentAlignment="Stretch" >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" SharedSizeGroup="1"></ColumnDefinition>
<ColumnDefinition Width="auto" SharedSizeGroup="2"></ColumnDefinition>
<ColumnDefinition Width="auto" SharedSizeGroup="3"></ColumnDefinition>
<ColumnDefinition Width="auto" SharedSizeGroup="4"></ColumnDefinition>
<ColumnDefinition Width="auto" SharedSizeGroup="5"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Style.Setters>
<Setter Property="Grid.Column" Value="{Binding Index}"/>
</Style.Setters>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
uj5u.com熱心網友回復:
ListBox您有一個包含本身是 es 的專案的外部專案,ListBox這些專案具有Gridas ItemsPanel。這Grid定義了共享大小組。將Grid.IsSharedSizeScope="True"附加屬性放在內部ListBox不起作用,因為此范圍僅包含一個專案 Grid面板。現在的方式意味著每個內部ListBox都有自己 Grid的專案面板定義自己的共享大小范圍,這不會影響其他人。如果你有一個ItemTemplate包含 a的例子,這將起作用,因為那時在共享大小范圍內的每個專案都將成為目標Grid。ListBox
這也意味著您的問題的解決方案,只需將共享大小范圍宣告移動到外部ListBox,這是包含所有內部ListBoxes 和它們Grid的范圍的范圍。
<ListBox Grid.Row="1"
ItemsSource="{Binding LibraryGroupedValuesList}"
SelectedItem="{Binding SelectedGroupedValues}"
Grid.IsSharedSizeScope="True">
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/436209.html
