我目前正在尝试使用usercontrol中的对象定义附加属性。
附加属性在所述控件的代码隐藏中注册:
public partial class MapEditor : UserControl
{
public static readonly DependencyProperty LatitudeProperty =
DependencyProperty.RegisterAttached("Latitude", typeof(double), typeof(MapEditor));
//...
}
然后我尝试在itemscontrol中绑定到这些属性:
<UserControl xmlns:Controls="clr-namespace:TestProject.Controls"
...>
<Grid>
...
<ItemsControl ItemsSource={Binding Items}>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Controls:MapEditor.Latitude"
Value="1" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</Grid>
</UserControl>
但是我遇到以下错误:
Error 6 Cannot find the Style Property 'Latitude' on the type 'TestProject.Controls.PhaseEditor'
这有什么解决方案吗?我尝试在一个单独的类文件中完全定义附加属性,但同样的问题仍然存在。
答案 0 :(得分:3)
我找到了这个问题的答案。
似乎有必要为依赖项属性声明公共静态getter和setter。也就是说,
public static double GetLatitude(DependencyObject obj);
public static void SetLatitude(DependencyObject obj, double value);
我相信在文档中的某处提到了这个需求,尽管我谦卑地认为这样的必要性对于用户来说不是很明显是很奇怪的。