是否可以添加基于其他属性隐藏一个属性?

时间:2013-05-02 17:18:27

标签: wpf silverlight

在我的自定义控件中,我有3个属性(State,Value,Count),带有Enum(Dock,Float,Tab)的State属性,如果Enum值(Float)表示我想隐藏(可浏览的False)Value属性in WPF。是否有可能使用州的PropertyChanged执行此操作。

2 个答案:

答案 0 :(得分:1)

在State的setter中,只需检查值是什么。如果它是浮动隐藏,否则取消隐藏。

private StateEnum _state;

public StateEnum State {
    get { return _state; }
    set
    {
        if (value == StateEnum.Float)
        {
            // Hide stuff
        }
        else
        {
            // Show stuff
        }
        name = value;
    }
}

答案 1 :(得分:0)

通常情况下,您无法有条理地隐藏房产。 但是,有一个技巧。

您可以为value属性定义值接口和包装器,并为值和非值状态实现。

示例:

public interface IValueWrapper {}
public class BasicValueWrapper : IValueWrapper
{
    public int Value { get; set; }
}
public class NoneValueWrapper : IValueWrapper {}

主类:

public class MainClass
{

    private StateEnum _state;
    public StateEnum State {
      get { return _state; }
      set
      {
        if (value == StateEnum.Float)
        {
            // Hide stuff
            this.Value= new NoneValueWrapper();
        }
        else
        {
            // Show stuff
            this.Value= new BasicValueWrapper();
        }
        name = value;
      }
    }

    public IValueWrapper Value { get; set; }

}