如何在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">