我试图实现某种害羞的ComboBox。它应该截取基本的Visibility属性,如果Items列表为空,则不允许显示self。目标是创建智能数据网格标题过滤器元素。
我尝试使用强制值回调拦截它,但这些回调应该是静态的,无法访问项目。
答案 0 :(得分:1)
你应该实际覆盖强制值回调。它有以下签名:
public delegate object CoerceValueCallback(
DependencyObject d,
object baseValue)
第一个参数d
实际上是您的组合框实例,因此可以访问Items属性:
private static object CoerceVisibility(DependencyObject d, object baseValue)
{
var comboBox = (ComboBox)d;
return comboBox.HasItems ? baseValue : Visibility.Collapsed;
}
您还必须订阅Items集合(或HasItems属性)的更改并调用CoerceValue(VisibilityProperty)