我有一个UserControl
,其中包含一个名为ItemWidth
的依赖项属性。我将通过UserControl
将Style
中的几个Path的宽度绑定到此依赖项属性,但在设计时我得到NullReferenceException。这是代码:
MyUserControl.xaml.cs
public partial class MyUserControl: UserControl
{
public MyUserControl()
{
InitializeComponent();
}
public double ItemWidth
{
get { return (double )GetValue(ItemWidthProperty);}
set { SetValue(ItemWidthProperty, value);}
}
public static readonly DependencyProperty ItemWidthProperty =
DependencyProperty.Register("ItemWidth", typeof(double),
typeof(MyUserControl), new PropertyMetadata(21));
MyUserControl.xaml
<UserControl x:Name = "root" ....>
<StackPanel DataContext="{Binding ElementName=root}"
Orientation="Horizontal">
<StackPanel.Resources>
<Style TargetType="Path">
<Setter Property="Width" Value="{Binding ItemWidth}"/>
</Style>
</StackPanel.Resources>
<Path Data="some path"/>
<Path Data="some path"/>
<Path Data="some path"/>
<Path Data="some path"/>
<Path Data="some path"/>
</StackPanel>
</UserControl>
如果我分别为每个Path设置宽度,则不会发生错误。但我想使用样式,不要为UserControl
中的每个路径定义宽度属性。
答案 0 :(得分:1)
我认为问题在于PropertyMetadata Initialization,它将21转换为整数。
如果您使用
new PropertyMetadata(21d)
或
new PropertyMetadata(21.00)
它不会抛出null异常。