设置属性'...保证金'抛出异常?

时间:2011-05-17 11:16:32

标签: c# .net wpf exception xaml

我需要一些关于如何修复此错误的建议:

例外:

"'Set property 'System.Windows.FrameworkElement.Margin' threw an exception.' Line number '6' and line position '31'."

的InnerException:

"'12,10,599,Auto' is not a valid value for property 'Margin'."

我不知道怎么会发生,因为我还没有接触到XAML。我只使用了设计师。

这是我的XAML(属性中没有任何“自动”):

<Window x:Class="LinksGraph.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="774" Width="671" Closing="Window_Closing">
        <Grid>
            <Label Content="URL:" Height="28" Margin="12,10,599,0" Name="lURL" VerticalAlignment="Top" FontWeight="Bold" />
            <Button Content="Start" Height="23" Margin="0,44,93,0" Name="btnStart" VerticalAlignment="Top" HorizontalAlignment="Right" Width="75" Click="btnStart_Click" />
            <ProgressBar Height="10" HorizontalAlignment="Left" Margin="12,0,0,46" Name="pbStatus" VerticalAlignment="Bottom" Width="625" />
            <TextBox Height="23" Margin="56,10,107,0" Name="tbURL" VerticalAlignment="Top" />
        </Grid>
    </Window>

感谢您的任何建议!

3 个答案:

答案 0 :(得分:1)

您不应该使用Margin指定控件位置,就像在winForms中使用location一样。而是让WPF自动排列控件,如下所示:

        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition />
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition />
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <TextBlock Name="lURL" FontWeight="Bold" VerticalAlignment="Center">URL:</TextBlock>
            <TextBox Name="tbURL" Grid.Column="1" VerticalAlignment="Center" Margin="4"/>
            <Button Name="btnStart" Grid.Column="2" Margin="4" Content="Start" Padding="7,2,7,2"/>
            <ProgressBar Grid.Row="2" Height="15" Name="pbStatus" Grid.ColumnSpan="3" Margin="8"/>
        </Grid>

与硬编码所有控制位置相比,它会更加灵活和灵活。

答案 1 :(得分:0)

您是否为指定边距设置的任何控件设置了默认样式?他们看起来像:

<Style TargetType="{X:Type Button}>

</Style>

此时我唯一可以想到的是你有一个自定义默认控件样式,试图在margin属性中使用资源,而且资源要么不正确,要么转换不正确

答案 2 :(得分:0)

我真的不知道发生了什么,但只有“格式c:\”帮我解决了这个问题:( 没有什么,包括重新安装VS和所有依赖,没有帮助......而且这很难过:(