2013-05-02 63 views
0

在我的自定義控件中,我有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

回答

1

在設置狀態,只需檢查值是什麼。如果它是浮動隱藏,否則取消隱藏。

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

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

}