我得到了一个自定义控件,其中包含一个 ProgressBar 以及其他元素。
<ProgressBar Value="{TemplateBinding CurrentProgress}"
MinValue="{TemplateBinding MinValue}"
MaxValue="{TemplateBinding MaxValue}"/>
<Label Content="{TemplateBinding CurrentProgress}"/>
在我的 .cs 文件中,我定义了所有这些属性,如下所示:
#region MaxProgress
public int MaxProgress
{
get { return (int)GetValue(MaxProgressProperty); }
set { SetValue(MaxProgressProperty, value); }
}
public static readonly DependencyProperty MaxProgressProperty =
DependencyProperty.Register("MaxProgress", typeof(int), typeof(GameFlowControl), new FrameworkPropertyMetadata(1000, FrameworkPropertyMetadataOptions.AffectsRender));
#endregion
#region CurrentProgress
public int CurrentProgress
{
get { return (int)GetValue(CurrentProgressProperty); }
set { SetValue(CurrentProgressProperty, value); }
}
public static readonly DependencyProperty CurrentProgressProperty =
DependencyProperty.Register("CurrentProgress", typeof(int), typeof(GameFlowControl), new FrameworkPropertyMetadata(50, FrameworkPropertyMetadataOptions.AffectsRender));
#endregion
#region MinProgress
public int MinProgress
{
get { return (int)GetValue(MinProgressProperty); }
set { SetValue(MinProgressProperty, value); }
}
public static readonly DependencyProperty MinProgressProperty =
DependencyProperty.Register("MinProgress", typeof(int), typeof(GameFlowControl), new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.AffectsRender));
#endregion
如上所示将这些值绑定到标签可以正常工作,但显然这些绑定不适用于我的 ProgressBar。到目前为止我已经尝试过:
- 更改 Value、MinValue 和 MaxValue 的顺序。
- 在 TemplateBinding 中添加了一个错字(例如 CurrentProgress XYZ),这给了我一个编译错误(因此可以识别属性)
- 为属性添加了默认值(请参阅 0、50、1000)。
- 直接删除了绑定和设置值:Value = 50, MinValue = 0, MaxValue=100,这显示 ProgressBar 显示为半填充。
- 为这些属性的 getter 添加了断点,它们没有被触发(这让我很困惑!)
任何提示可能导致这种情况?