是否可以添加基于其他属性隐藏一个属性?
问题描述:
在我的自定义控件中,我有3个属性(状态,值,计数),状态属性与枚举(码头,浮动,选项卡),如果枚举值(浮动)意味着我想隐藏(可用错误)WPF值属性。有没有可能与国家的PropertyChanged做到这一点。是否可以添加基于其他属性隐藏一个属性?
答
在设置状态,只需检查值是什么。如果它是浮动隐藏,否则取消隐藏。
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; }
}
看到对方的回答提供,你的意思是使用隐藏属性的代码,或只是隐藏在UI的财产(这将意味着隐藏一个文本框或什么的)? – 2013-05-02 19:29:03
我需要的是如果我们将StateEnum设置为Float .Need以从我的自定义控件中隐藏Pubic属性。结果就好像我们为一个公共属性设置Browsable属性为false。 – Ravuthasamy 2013-05-03 05:07:11