在我的自定义控件中,我有 3 个属性(State,Value,Count),带有 Enum(Dock,Float,Tab)的 State 属性,如果 Enum 值(Float)意味着我想在 WPF 中隐藏(Browsable False)Value 属性。有没有可能用 State 的 PropertyChanged 来做到这一点。
问问题
81 次
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 回答