Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在wpf中查找属性是否可附加?_Wpf_Attached Properties - Fatal编程技术网

如何在wpf中查找属性是否可附加?

如何在wpf中查找属性是否可附加?,wpf,attached-properties,Wpf,Attached Properties,除椭圆填充外,上述代码按预期工作。我猜它不是作为椭圆的附加属性,高度是。那么,如何检查属性是否可附加 上述代码不会产生任何错误。填充属性在形状类中定义,而不是网格。您的代码试图在网格中应用填充属性,该属性无效,因此不起作用 还要注意,eliple.Height属性不属于eliple,而是属于FrameworkElement。网格是一个框架元素,因此得到应用 如果您认为将椭圆高度设置为300,那么这里不会发生这种情况。它将Grid.Height设置为300。如果该属性不是附加属性,因此无法应用于网

除椭圆填充外,上述代码按预期工作。我猜它不是作为椭圆的附加属性,高度是。那么,如何检查属性是否可附加


上述代码不会产生任何错误。

填充
属性在
形状
类中定义,而不是
网格
。您的代码试图在
网格
中应用
填充
属性,该属性无效,因此不起作用

还要注意,
eliple.Height
属性不属于
eliple
,而是属于
FrameworkElement
。网格是一个框架元素,因此得到应用


如果您认为
将椭圆高度设置为
300
,那么这里不会发生这种情况。它将
Grid.Height
设置为300。

如果该属性不是附加属性,因此无法应用于网格,则可以使用intellisense的工具提示判断设计器中是否附加了属性

或者,如果您试图从代码背后找出这个问题,您可以执行以下操作

   <Grid Width="100">     

        <Grid.Style>
            <Style>
                <Setter Property="Ellipse.Height" Value="300"/>
                <Setter Property="Ellipse.Fill" Value="Blue"/>
                <Setter Property="Grid.Background" Value="Green"/>
            </Style>                
        </Grid.Style>

        <Ellipse Name="Elp" Width="100" Height="100"></Ellipse>

    </Grid>
与线路一起使用

   bool IsAttachedProperty(DependencyProperty dependencyProperty)
    {
        DependencyPropertyDescriptor dependencyPropertyDescriptor = DependencyPropertyDescriptor.FromProperty(dependencyProperty, dependencyProperty.OwnerType);
        if (dependencyPropertyDescriptor != null && dependencyPropertyDescriptor.IsAttached)
            return true;
        else
            return false;
    }

上述结果可通过以下方法获得:

bool canvasLeft = IsAttachedProperty(Canvas.LeftProperty);

按空格键后,附加属性的类名也会显示为{}like,如果您键入

    <Grid Width="100">

        <Grid.Resources>
            <Style x:Key="grdRes">
                <Setter Property="Ellipse.Height" Value="300"/>
                <Setter Property="Ellipse.Fill" Value="Blue"/>
                <Setter Property="Grid.Background" Value="Green"/>
            </Style>
        </Grid.Resources>

        <Ellipse Name="Elp" Width="100" Height="100">
            <Ellipse.Style>
                <Style BasedOn="{StaticResource grdRes}"></Style>
            </Ellipse.Style>
        </Ellipse>

    </Grid>

我认为问题在于您试图设置
椭圆。在
网格上填充
。您可以应用其他类的附加属性,这就是它们的用途!我想问题是,你怎么才能知道一个属性是否是一个附加属性。你说Fill属性不属于Grid,那么我们就不会得到一个错误?代码运行正常。@AnjumSKhan出现错误。你就是不知道去哪里找。请在
工具
选项
调试
输出窗口
中打开WPF绑定错误<代码>
是一个运行时动态类,它没有编译时检查。WPF不会停止绑定错误的执行。
<Button followed by spacebar
<TextBox Width="100" Height="50" FontSize="30" Grid.IsSharedSizeScope="True">