2011-02-23 4 views
2

표준 색 구성표의 두 가지 샘플 TextBox와 다음과 같은 생성자는 Box2의 전경색이 명시 적으로 설정되었으므로 회색 전경과 검정 전경을 가진 Box1을 생성합니다.WPF : 컨트롤의 명시 적 전경색을 제거하십시오.

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     Box2.Foreground = Brushes.Black; 
     Box1.IsEnabled = false; 
     Box2.IsEnabled = false; 
    } 
} 

I가 "해제"전경 색상이 너무 BOX2 기본 장애인 색상 "다시 떨어진다"과의 IsEnabled가 false로 설정되어있는 회색 전경을 가지고 싶습니다. 이것이 가능한가? 그렇다면, 어떻게 완료됩니까?

Foreground 속성을 null로 설정해도 원하는 효과가 없습니다. 가능한 경우 사용자 정의 색상 구성표와 호환되지 않으므로 Foreground 색상을 회색으로 명시 적으로 설정하지 마십시오.

답변

5

로 설정하려고 노력하지만, 다음과 같은 코드를 시도 :

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     Box2.Foreground = Brushes.Black; 
     Box1.IsEnabled = false; 
     Box2.IsEnabled = false; 
     Box2.ClearValue(TextBox.ForegroundProperty); 
    } 
} 
+0

빙고! 감사합니다. – Caleb

+1

흥미롭게도 로컬 값을 지워도 반드시 동일한 기본값이 복원되지는 않습니다. ClearValue 함수에 대해 읽은 후 여기에서 우선 순위에 대한 설명을 발견했습니다. http://msdn.microsoft.com/en-us/library/ms743230(v=vs.90).aspx 및 여기에서 샘플 : http : // msdn.microsoft.com/en-us/library/ms771579(v=vs.90).aspx – Caleb

0

이벤트의 IsEnabledChanged를 사용하여 상자의 전경을 설정합니다.

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     Box2.Foreground = Brushes.Black; 
     Box1.IsEnabled = false; 
     Box2.IsEnabled = false; 
     Box1.IsEnabledChanged += new DependencyPropertyChangedEventHandler(label1_IsEnabledChanged); 
    } 

    void label1_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e) { 
     //Set the foreground you want here! 
    } 

} 

하지만 당신은 명시 적으로 설정하는 색을 원하지 않는 경우, 즉 당신이 무슨 뜻인지 확실하지 않다 투명 OO

+0

답안을 보내 주셔서 감사합니다, Renanlf. 그러나 이벤트 처리기에서 전경색을 명시 적으로 설정하지 않고 대답을 사용하는 방법을 알지 못합니다. 가능한 경우 전경색을 명시 적으로 설정하지 않는 것이 좋습니다. Box2의 전경색을 기본 해제 된 색으로 "되돌릴"싶습니다. 이 작업을 수행하는 방법을 알고 있습니까? 투명 브러시를 사용해 보았습니다.하지만 모든 텍스트가 투명하게 보입니다. – Caleb

+0

Foreground 속성에 바인딩을 설정하고 set/get 할 때 원하는 색상으로 색상을 설정하는 논리를 사용하면 어떻습니까? – renanlf

+0

포 그라운드 색상을 다시 떨어지게하려면 setter/getter에서 무엇을 사용합니까? – Caleb

관련 문제