我在搞乱DataGrid
标题,发现了一些尴尬的事情。我一直在玩弄它,直到在 XAML 中找到根本原因并构建了一个如何重现的小样本。
我只使用文本框和数据网格对此进行了测试,但我怀疑它也适用于其他控件。当数据网格或文本框的宽度绑定到同级元素时,在数据网格或文本框上设置Margin
属性(我设置)将导致我的整个 Visual Studio 几乎立即停止响应。 Margin="2"
ActualWidth
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" SizeToContent="WidthAndHeight">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal" x:Name="panel">
<TextBlock Text="Text:1" Width="90" />
<TextBox Width="90" />
</StackPanel>
<DataGrid AutoGenerateColumns="False" Width="{Binding ActualWidth, ElementName=panel}">
<DataGrid.Columns>
<DataGridTextColumn Header="Test" Width="*" />
<DataGridTextColumn Header="Test2" Width="*" />
<DataGridTextColumn Header="Test3" Width="*" />
</DataGrid.Columns>
</DataGrid>
<TextBox Width="{Binding ActualWidth, ElementName=panel}" />
</StackPanel>
</Window>
这是设计预览在停止响应之前的样子。窗口延伸到“无穷大”,直到我怀疑 VS 内存不足。
知道是什么原因造成的吗?