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

问题描述:

在我的自定义控件中,我有3个属性(状态,值,计数),状态属性与枚举(码头,浮动,选项卡),如果枚举值(浮动)意味着我想隐藏(可用错误)WPF值属性。有没有可能与国家的PropertyChanged做到这一点。是否可以添加基于其他属性隐藏一个属性?

+0

看到对方的回答提供,你的意思是使用隐藏属性的代码,或只是隐藏在UI的财产(这将意味着隐藏一个文本框或什么的)? – 2013-05-02 19:29:03

+0

我需要的是如果我们将StateEnum设置为Float .Need以从我的自定义控件中隐藏Pubic属性。结果就好像我们为一个公共属性设置Browsable属性为false。 – Ravuthasamy 2013-05-03 05:07:11

在设置状态,只需检查值是什么。如果它是浮动隐藏,否则取消隐藏。

private StateEnum _state; 

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

我需要的是如果我们将StateEnum设置为Float .Need以从我的自定义控件中隐藏Pubic属性。结果就好像我们为一个公共属性设置Browsable属性为false。 – Ravuthasamy 2013-05-03 04:17:53

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

您可以为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; } 

}