在后面的 UserControl 代码中获取依赖项 属性 值
Get Dependency Property Value in UserControl Code Behind
我是 WPF 新手。我面临以下问题。我有一个用户控件,这是用户控件的代码
自定义控件代码
public partial class CustomCanvas : UserControl
{
public CustomCanvas()
{
InitializeComponent();
DrawCanvas();
}
private void DrawCanvas()
{
//TODO:
//Get the Dictionary Value from Parent Bound Property
}
public Dictionary<string, List<Shapes>> ShapesData
{
get { return (Dictionary<string, List<Shapes>>)GetValue(ShapesDataProperty); }
set { SetValue(ShapesDataProperty, value); }
}
public static readonly DependencyProperty ShapesDataProperty =
DependencyProperty.Register("ShapesData", typeof(Dictionary<string, List<Shapes>>), typeof(CustomCanvas), new PropertyMetadata(ShapesDataChanged));
private static void ShapesDataChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var value = e.NewValue;
}
}
主要Window代码
<Grid>
<uc:CustomCanvas ShapesData="{Binding ShData}" ></uc:CustomCanvas>
</Grid>
ShapesData 的值受限于以下代码。
ShData = new Dictionary<string, List<Shapes>>()
{
{"Week 1", new List<Shapes>() {Shapes.Circle, Shapes.Rectangle}},
{"Week 2", new List<Shapes>() {Shapes.Circle}},
{"Week 3", new List<Shapes>() {Shapes.Rectangle}}
};
现在我的问题是,在 CustomControl DrawCanvas 方法中,我想获取父级中的有界值。任何人都可以就此指导我。
P.S:我知道如何使用相对 RelativeSource 和 Mode 作为 FindAncestor 将此值绑定到 child 中。在这里我只想获取值并处理该字典数据。在 ShapesDataChanged 中,我可以轻松访问数据,但问题在于在 DrawCanvas 函数中获取数据。
提前致谢。
您可以使用 DependencyObject 的 GetValue() 方法。
var theValueYouNeeded = CustomCanvas.GetValue(ShapesDataProperty);
Dictionary<string, List<Shapes>> value = (Dictionary<string, List<Shapes>>)theValueYouNeeded;
....
我是 WPF 新手。我面临以下问题。我有一个用户控件,这是用户控件的代码
自定义控件代码
public partial class CustomCanvas : UserControl
{
public CustomCanvas()
{
InitializeComponent();
DrawCanvas();
}
private void DrawCanvas()
{
//TODO:
//Get the Dictionary Value from Parent Bound Property
}
public Dictionary<string, List<Shapes>> ShapesData
{
get { return (Dictionary<string, List<Shapes>>)GetValue(ShapesDataProperty); }
set { SetValue(ShapesDataProperty, value); }
}
public static readonly DependencyProperty ShapesDataProperty =
DependencyProperty.Register("ShapesData", typeof(Dictionary<string, List<Shapes>>), typeof(CustomCanvas), new PropertyMetadata(ShapesDataChanged));
private static void ShapesDataChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var value = e.NewValue;
}
}
主要Window代码
<Grid>
<uc:CustomCanvas ShapesData="{Binding ShData}" ></uc:CustomCanvas>
</Grid>
ShapesData 的值受限于以下代码。
ShData = new Dictionary<string, List<Shapes>>()
{
{"Week 1", new List<Shapes>() {Shapes.Circle, Shapes.Rectangle}},
{"Week 2", new List<Shapes>() {Shapes.Circle}},
{"Week 3", new List<Shapes>() {Shapes.Rectangle}}
};
现在我的问题是,在 CustomControl DrawCanvas 方法中,我想获取父级中的有界值。任何人都可以就此指导我。
P.S:我知道如何使用相对 RelativeSource 和 Mode 作为 FindAncestor 将此值绑定到 child 中。在这里我只想获取值并处理该字典数据。在 ShapesDataChanged 中,我可以轻松访问数据,但问题在于在 DrawCanvas 函数中获取数据。
提前致谢。
您可以使用 DependencyObject 的 GetValue() 方法。
var theValueYouNeeded = CustomCanvas.GetValue(ShapesDataProperty);
Dictionary<string, List<Shapes>> value = (Dictionary<string, List<Shapes>>)theValueYouNeeded;
....