覆盖Visibility属性以实现害羞控制

时间:2017-11-24 06:50:38

标签: c# wpf

我试图实现某种害羞的ComboBox。它应该截取基本的Visibility属性,如果Items列表为空,则不允许显示self。目标是创建智能数据网格标题过滤器元素。

我尝试使用强制值回调拦截它,但这些回调应该是静态的,无法访问项目。

1 个答案:

答案 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)

相关问题