2011-05-21 53 views
0

我想將樣式中的Fill屬性綁定到公共屬性,我使用了下面的方法,但它似乎不起作用。
裝訂風格二傳手到公共財產?

public SevenSegmentControl() 
{ 
    InitializeComponent(); 
    SevenSegmentColor = Color.FromRgb(251, 23, 23); 
} 

public Color SevenSegmentColor { get; set; } 
<Style x:Key="RectangleStyle1" TargetType="{x:Type Rectangle}"> 
    <Setter Property="Fill" Value="{Binding Path=SevenSegmentColor, Mode=TwoWay}"/> 
    <Setter Property="RadiusX" Value="4"/> 
    <Setter Property="RadiusY" Value="4"/> 
    <Setter Property="StrokeThickness" Value="0"/> 
    <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/> 
</Style> 

我該怎麼辦呢?

+0

請介紹「不工作」 – 2011-05-21 19:58:11

+0

我的意思是,'Fill'屬性不顯示,矩形顯示爲透明。 – 2011-05-21 20:10:02

+0

檢查我編輯的答案 – biju 2011-05-21 20:19:15

回答

2

您正在嘗試直接設置顏色值的Fill屬性,它的類型是Brush.You可以檢查輸出窗口,以找出binding errors .Either你需要一個valueconverter你的顏色轉換成一個有效的刷子或你需要做這樣的

public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      SevenSegmentColor =new SolidColorBrush(Color.FromRgb(251, 23, 23)); 
      DataContext=this; 
     } 

     public SolidColorBrush SevenSegmentColor { get; set; } 

    } 

編輯

如果您設置的屬性值之前分配DataContext的,用戶界面將永遠不會被你的財產change.As你的情況,你是通知使用分配數據上下文

DataContext="{Binding RelativeSource={RelativeSource Self}}" 

所以DataContext的是你的SevenSegmentColor屬性前設置在初始化時本身初始化後分配value.Later當你分配一個顏色值的屬性,用戶界面將永遠不會得到通知,因此你的顏色是在UI.To未顯示解決這個問題,你需要實現你的用戶控件的INotifyPropertyChanged接口

樣品

/// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window,INotifyPropertyChanged 
    { 
     private SolidColorBrush sevenSegmentColor; 
     public MainWindow() 
     { 
      InitializeComponent(); 
      SevenSegmentColor =new SolidColorBrush(Color.FromRgb(251, 23, 23)); 
     } 

     public SolidColorBrush SevenSegmentColor 
     { 
      get 
      { 
       return sevenSegmentColor; 
      } 
      set 
      { 
       sevenSegmentColor = value; 
       // Call OnPropertyChanged whenever the property is updated 
       OnPropertyChanged("SevenSegmentColor"); 
      } 
     } 

     // Declare the event 
     public event PropertyChangedEventHandler PropertyChanged; 

     // Create the OnPropertyChanged method to raise the event 
     public void OnPropertyChanged(string name) 
     { 
      if (PropertyChanged != null) 
      { 
       PropertyChanged(this, new PropertyChangedEventArgs(name)); 
      } 
     } 
    } 
+0

我已經完成了,但問題沒有解決,並且矩形不再顯示任何顏色! – 2011-05-21 20:23:19

+0

你確定你已經設置了datacontext ..?你有沒有檢查輸出窗口的綁定錯誤..? – biju 2011-05-21 20:25:45

+0

我已經爲DataContext添加了'DataContext =「{Binding RelativeSource = {RelativeSource Self}}」'我也檢查了輸出窗口,沒有錯誤沒有faild! – 2011-05-22 00:53:01