2
我有一個數據網格,這些數據網格出現或消失取決於某些用戶首選項。 該數據網格是包含這些網格中的一些網格的堆疊面板的一部分。 問題是,當用戶隱藏一些行時,數據網格高度不會縮小。這隻發生在windows xp上,而不是Windows 7上的網格收縮如預期。當行摺疊時,DataGrid不會調整大小
這裏是一個小例子,顯示了問題:
的XAML:
<Window x:Class="TestDataGridResize.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Grid>
<StackPanel Orientation="Vertical">
<Button Content="Hide some rows" Click="Button_Click"/>
<DataGrid Name="dataGrid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True" Binding="{Binding Name}" Header="Name" />
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Visibility" Value="{Binding Visibility}"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
<TextBlock Text="THE END" Background="AliceBlue" TextAlignment="Center"/>
</StackPanel>
</Grid>
其背後的代碼:
public partial class MainWindow : Window
{
private ObservableCollection<Element> elements = new ObservableCollection<Element>();
public MainWindow()
{
InitializeComponent();
this.dataGrid.ItemsSource = this.elements;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 5; i++)
this.elements[i].Visibility = System.Windows.Visibility.Collapsed;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 10; i++)
this.elements.Add(new Element("Element " + i));
}
}
public class Element : INotifyPropertyChanged
{
private static PropertyChangedEventArgs VisibilityChanged = new PropertyChangedEventArgs("Visibility");
private string name;
public string Name
{
get { return this.name; }
set { this.name = value; }
}
private Visibility visibility;
public Visibility Visibility
{
get { return this.visibility; }
set
{
this.visibility = value;
if (this.PropertyChanged != null)
this.PropertyChanged(this, VisibilityChanged);
}
}
public Element(string name)
{
this.name = name;
}
public event PropertyChangedEventHandler PropertyChanged;
}
目標框架是4.0。 任何幫助將不勝感激。
此修復該問題。非常感謝你。 – amnesyc
知道使用堆棧面板有什麼問題仍然很有趣... – amnesyc
StackPanel無法調整其內容元素的大小...... Grid就是這樣做的。 – Sheridan