在自定义控件中设置控件的依赖项属性

时间:2014-01-08 15:53:24

标签: c# wpf mvvm wpf-controls

我有一个我在我的解决方案中继承的infragistics网格。现在我想在我的自定义控件代码中设置一个在infragistics网格控件中定义的依赖项属性,而不是在xaml中。我如何完成设置依赖属性?

我能够在自定义控件中设置支持CLR属性,但正如预期的那样,它没有按预期触发gridcontrol UI更改,因此我被迫在自定义控件中设置依赖项属性。

我究竟是如何做到这一点的?

2 个答案:

答案 0 :(得分:0)

通常使用CLR属性'wrappers'来声明DependencyProperty

public static readonly DependencyProperty ItemsProperty = DependencyProperty.Register(
    "Items", typeof(ObservableCollection<string>), typeof(YourControlType));

public ObservableCollection<string> Items
{
    get { return (ObservableCollection<string>)GetValue(ItemsProperty); }
    set { SetValue(ItemsProperty, value); }
}

如果你继承的Grid声明他们的DependencyProperties是这样的,那么你应该可以像这样直接使用CLR包装的属性:

Items = new ObservableCollection<string>();
Items.Add("Something");

如果他们没有这样做,那么您可以在包装的属性中看到如何访问它们:

anInstanceOfYourControlType.SetValue(ItemsProperty, "some value");

他们当然有可能宣布内部属性,在这种情况下你将无法访问它们,但你应该能够从他们的在线文档中找到它。

答案 1 :(得分:0)

您可以使用DependencyProperty SetValue来设置依赖属性的本地值。

dataGridObject.SetValue(DataGrid.ItemsSourceProperty, value);

但是如果你的DP绑定了一些CLR属性并且你想要更新它,请使用SetCurrentValue方法。

dataGridObject.SetCurrentValue(DataGrid.ItemsSourceProperty, value);