我得到了下面的代碼,它包含一個DataGrid,它列出了項目,並對列表框中的選定項目進行了迴應。一切正常,但DataGrid列的寬度更加粗糙。我將「name」列的寬度設置爲星號,以便「wert」列獲取其內容所需的空間,而「名稱」列將剩下其餘部分。這是工作,但有一點問題。當應用程序啓動時,所有列都處於其最小寬度,並且只在ListBox中選擇另一個項目將列的寬度更新爲所需值(星號爲「name」,auto爲「wert」)。 我嘗試在應用程序加載時使用DataGrid的UpdateLayout方法,但這並沒有幫助。DataGrid的列寬(width =「*」)不是「刷新」
此外,我正在使用擴展器,並且當所有擴展器都關閉時,我必須首先展開其中一個項目,然後在列表框中加載另一個項目,以使寬度正確。
任何人都可以請指點我正確的方向嗎? :)
UPDATE:最初的問題解決了,但是還有另外一個小問題: 的列不再崩潰,但theye不在其所需的大小無論是。它們的大小適合其標題名稱,而不是行內容。這僅在擴展器默認關閉時纔會發生。當我將擴展器設置爲展開狀態時,所有列都根據需要設置爲其內容寬度。
下面是使用代碼:
<Grid.DataContext>
<XmlDataProvider x:Name="XmlData" Source="entries.xml" XPath="Root/Person" />
</Grid.DataContext>
<ListBox Name="PersonListBox"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource listBoxTemplate}"
IsSynchronizedWithCurrentItem="True"
Visibility="Visible" SelectionMode="Single" SelectedIndex="-1" DataContext="{Binding}">
</ListBox>
<DataGrid IsSynchronizedWithCurrentItem="True" Name="itemGrid"
DataContext="{Binding ElementName=PersonListBox, Path=SelectedItem}"
CanUserResizeColumns="False"
CanUserResizeRows="False"
IsReadOnly="true"
Background="White"
HorizontalScrollBarVisibility="Hidden"
AutoGenerateColumns="False">
<DataGrid.Resources>
<CollectionViewSource x:Key="items" Source="{Binding XPath=item}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="@name"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</DataGrid.Resources>
<DataGrid.ItemsSource>
<Binding Source="{StaticResource items}"/>
</DataGrid.ItemsSource>
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="Name" Binding="{Binding [email protected]}"/>
<DataGridTextColumn Header="Wert" Binding="{Binding [email protected], Converter={StaticResource sumConverter}}}"/>
</DataGrid.Columns>
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander >
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" />
<TextBlock Text="{Binding Path=Items, Converter={StaticResource sumConverter}}" />
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
</DataGrid>
工程。感謝您的時間:) – ch40s
更新的問題^^ – ch40s
您是否嘗試將列的寬度設置爲「自動」而不是「*」? – philt5252