wpf - 如何阻止 WPF Grid 在子元素上自动插入边距

标签 wpf grid visual-studio-2012 margin

我在 Visual Studio 2012 和 WPF 上遇到了最烦人的问题,我希望能得到一些帮助。我有一个带有子元素的简单网格,比如 TextBlocks,带有网格的单元格。 TextBlocks 设置为在单元格内相对定位(例如,使用 Horizo​​ntalAlignment of Left)。一切都很好,直到我敢调整网格的列或行的大小。 Visual Studio 然后插入 Margin 和 Width/Height 属性以与父/子元素的结果位置保持一致。这一切都是默默发生的,直到以后我决定进一步减小列的大小时,我才注意到它,突然间 TextBlock 被剪裁了,因为它插入了 Margin 属性。我必须检查每个子元素并手动删除这些额外的属性。在我当前的项目中,我不得不这样做近 100 次,而且我在网络上找不到任何东西来弄清楚如何告诉 Visual Studio BACK OFF 并停止采取这些窃取我正在尝试实现的漂亮格式的自由.
这是一个代码片段供引用。但这已经发生在我项目中许多不同的网格实例上。

<Grid  Canvas.Left="435" Canvas.Top="138" Height="61" Width="192">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="11*"/>
        <ColumnDefinition Width="21*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="1*"/>
        <RowDefinition Height="1*"/>
    </Grid.RowDefinitions>

    <TextBlock Grid.Row="0" Grid.Column="0" Text="Subtotal:" HorizontalAlignment="Right" VerticalAlignment="Center"  />
</Grid>

...在调整第 0 列的大小之后:
<TextBlock Grid.Row="0" Grid.Column="0" Text="Subtotal:" HorizontalAlignment="Right" VerticalAlignment="Center" Height="16" Margin="0,7" Width="47"  />

当然,还有其他人遇到过这个问题。请帮忙!

谢谢

最佳答案

对于 XAML 设计器中奇怪的自动行为,您无能为力。通俗地说,您通常最好使用 XAML 文本编辑器而不是设计器来编辑您的 xaml。

幸运的是,在您的特殊情况下有一个解决方案。行为取决于您用鼠标实际抓取列的位置:

如果您在顶部捕获它,它将设置新的边距。
grab at the top

如果您在下方(在线)捕获它,它将不会设置/更改边距。
grab at the bottom

更新:此功能在 VS 2012 中不再存在。

您现在可以使用 Ctrl 和/或 Shift 键更改列调整大小的行为。但是这些行为都不会产生您所追求的结果。

如果网格中的所有项目都没有 Width和一个 Margin设置,最好的办法是在没有任何修饰键的情况下调整列的大小(在 VS2012 中它不应该在视觉上破坏布局,它应该只添加不必要的 MarginHeightWidth 属性),然后在文档大纲中窗口多选所有元素,然后在“属性” View 中单击“设置为自动”按钮。这将删除不必要的属性。

Set To Auto

关于wpf - 如何阻止 WPF Grid 在子元素上自动插入边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12822177/

相关文章:

javascript - extjs中grid的汇总行添加点击事件

asp.net-mvc-2 - VS2012 中的 ASP.net MVC2 项目不起作用

c# - 推荐的 ILNumerics 优化包

.net - 在 WPF .Net 中测量 UI 性能的正确方法

WPF MVVM 数据绑定(bind)在页面导航后被破坏

c# - 上下文菜单位置

git - TFS首次 checkin 的问题(原来是git项目)

c# - Task.StartNew() 在 STA 模式下的工作方式不同?

css - Bootstrap 网格配置

c# - 绑定(bind)到 ColumnDefinition 的宽度