如何从Silverlight数据表单中删除填充?

如何从Silverlight数据表单中删除填充?,silverlight,xaml,Silverlight,Xaml,我有一个Silverlight 3数据表单,它向数据模板添加了一些奇怪的填充。使用Silverlight Spy检查XAML输出,看起来有一个ContentPresenter,边距为12、12、6、12,其中包含DataTemplate的内容。这意味着表格中总是有填充物,这对我的情况并不理想 有人知道如何在不创建样式资源和模板化整个控件的情况下调整此边距吗?它似乎不是表单的任何明显的填充属性 以下是Silverlight Spy中的外观:我觉得这样做有点脏,但我刚刚在数据表单的第一个子元素上添加

我有一个Silverlight 3数据表单,它向数据模板添加了一些奇怪的填充。使用Silverlight Spy检查XAML输出,看起来有一个ContentPresenter,边距为12、12、6、12,其中包含DataTemplate的内容。这意味着表格中总是有填充物,这对我的情况并不理想

有人知道如何在不创建样式资源和模板化整个控件的情况下调整此边距吗?它似乎不是表单的任何明显的填充属性


以下是Silverlight Spy中的外观:

我觉得这样做有点脏,但我刚刚在数据表单的第一个子元素上添加了负边距。非常不雅观,但在没有明显的替代方案的情况下完成了工作。

我觉得这样做很肮脏,但我只是在数据表单的第一个子元素上加了负边距。非常不雅观,但在没有明显的替代方案的情况下完成了工作。

使用一小段代码的替代方法是使用可视化树找到要设置的ContentPresenter

调整代码以删除不适用于Silverlight的ContentElement,然后您可以找到内容演示者并更新边距,例如

foreach ( var match in LayoutRoot.FindChildren<ContentPresenter>())
        {
            if ( match.Margin.Bottom == 12 && match.Margin.Top == 12 && match.Margin.Left == 12 && match.Margin.Right == 6)
                match.Margin = new Thickness(0);
        }
foreach(LayoutRoot.FindChildren()中的变量匹配)
{
if(match.Margin.Bottom==12&&match.Margin.Top==12&&match.Margin.Left==12&&match.Margin.Right==6)
匹配。边距=新厚度(0);
}

使用一小段代码的另一种方法是使用可视化树来查找ContentPresenter以设置is边距

调整代码以删除不适用于Silverlight的ContentElement,然后您可以找到内容演示者并更新边距,例如

foreach ( var match in LayoutRoot.FindChildren<ContentPresenter>())
        {
            if ( match.Margin.Bottom == 12 && match.Margin.Top == 12 && match.Margin.Left == 12 && match.Margin.Right == 6)
                match.Margin = new Thickness(0);
        }
foreach(LayoutRoot.FindChildren()中的变量匹配)
{
if(match.Margin.Bottom==12&&match.Margin.Top==12&&match.Margin.Left==12&&match.Margin.Right==6)
匹配。边距=新厚度(0);
}