.net – 设置边距,在控件上绑定到ActualWidth的宽度会导致VS2012
我正在搞乱DataGrid标题并发现一些尴尬的东西.我玩弄它直到我找到XAML中的根本原因并构建了一个如何重现的小样本.
我只用textbox和datagrid对它进行了测试,但我怀疑它也适用于其他控件.当datagrid或文本框的宽度通过ActualWidth绑定到同级元素时,在datagrid或文本框上设置Margin属性(我设置Margin =“2”)将导致我的整个Visual Studio几乎立即停止响应. <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耗尽内存. 知道是什么原因引起的吗? 解决方法
尝试为StackPanel设置Horizo??ntalAlignment =“Left”(无论哪种对齐方式):
<StackPanel x:Name="panel" Orientation="Horizontal" HorizontalAlignment="Left"> <TextBlock Text="Text:1" Width="90" /> <TextBox Width="90" /> </StackPanel> 在面板宽度将为180,并且所有其余控件,此值将继承自绑定(DataGrid,TextBox). 引自StackPanel MSDN:
由于面板的默认对齐方式NaN,该面板设置Width和Height继承自父级 – StackPanel,后者也没有显式参数.在此面板中,宽度和高度继承自Window. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |