【发布时间】:2012-06-01 14:34:13
【问题描述】:
我在 WPF 中创建了一个用户控件,并在后面的代码中创建了一些依赖属性。
我在我的用户控件中添加了几个 WPF 控件,其中一个是进度条,所以我尝试做的是公开 Value progressBar 属性,如下所示:
public static readonly DependencyProperty valueProperty = DependencyProperty.Register(
"Value",
typeof(Double),
typeof(MyUserControl),
new FrameworkPropertyMetadata(
ValuePropertyCallback));
private static void ValuePropertyCallback(DependencyObject controlInstance, DependencyPropertyChangedEventArgs args)
{
MyUserControl myUserControlInstance = (ProgressControl)controlInstance;
myUserControlInstance.progressBar.Value = (Double)args.NewValue;
}
public Double Value
{
get { return (Double)GetValue(valueProperty); }
set { SetValue(valueProperty, value); }
}
我在 XAML 中写了这个:
<MyUserControl Name="myControl" Value="{Binding ProgressBarValue}" >
但它似乎不起作用,既没有设置也没有获取值。
我有几个小时的时间来审查这个,但我不知道我做错了什么。
希望你能帮助我,提前谢谢你。
(注意: DataContext 是之前定义的,它是正确的,因为这是唯一不起作用的绑定)
【问题讨论】:
-
Binding errors?您是否在本地覆盖了 DataContext,现在它不会像您预期的那样继承另一个数据上下文?
-
用调试器能看到有没有进入回调吗?
-
@H.B.我已经验证过,实际上我有更多可以工作的属性,因此这个问题对我来说太奇怪了,因为我的所有其他属性都可以正常工作
-
@VincentPiel,是的,我已经这样做了,我从来没有进入回调,但我知道它可以工作,因为如果在设计时我给我的属性设置了一个任意值,进度条会改变它“进步”方面
-
尝试更改为 smthg,如:new FrameworkPropertyMetadata(new PropertyCallBack(ValuePropertyCallback))
标签: c# wpf user-controls dependency-properties