0

在我的自定义控件中,我有 3 个属性(State,Value,Count),带有 Enum(Dock,Float,Tab)的 State 属性,如果 Enum 值(Float)意味着我想在 WPF 中隐藏(Browsable False)Value 属性。有没有可能用 State 的 PropertyChanged 来做到这一点。

4

2 回答 2

1

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

private StateEnum _state;

public StateEnum State {
    get { return _state; }
    set
    {
        if (value == StateEnum.Float)
        {
            // Hide stuff
        }
        else
        {
            // Show stuff
        }
        name = value;
    }
}
于 2013-05-02T17:30:18.907 回答
0

通常,您不能有条件地隐藏属性。但是,有一个窍门。

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

例子:

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; }

}
于 2013-05-02T19:12:39.367 回答