加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – 设置边距,在控件上绑定到ActualWidth的宽度会导致VS2012

发布时间:2020-12-16 07:05:35 所属栏目:百科 来源:网络整理
导读:我正在搞乱DataGrid标题并发现一些尴尬的东西.我玩弄它直到我找到XAML中的根本原因并构建了一个如何重现的小样本. 我只用textbox和datagrid对它进行了测试,但我怀疑它也适用于其他控件.当datagrid或文本框的宽度通过ActualWidth绑定到同级元素时,在datagrid
我正在搞乱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:

The default value is stretch for both HorizontalAlignment and VerticalAlignment of content that is contained in a StackPanel.

由于面板的默认对齐方式NaN,该面板设置Width和Height继承自父级 – StackPanel,后者也没有显式参数.在此面板中,宽度和高度继承自Window.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读