2011-02-15 204 views
0

在我的數據網格上我有一個DataTrigger決定設置前景(文本)的顏色。該值將作爲我的頁面的屬性進行存儲。WPF ToolKit Datagrid刷新綁定

我已經得到了這個所有工作很好,但現在我給用戶的功能來設置自己的顏色。

我的問題是,當這種顏色是由用戶設置,我更新屬性如何使數據網格現在反映這種變化。

的什麼,我下面做的例子(PrivateMessages是顯示不同的顏色)

<DataTrigger Binding="{Binding Path=IsPrivate}" Value="True">          
    <Setter Property="Foreground" Value="{Binding ElementName=GridPage, Path=PrivateMessageColour}" /> 
</DataTrigger> 

任何幫助或指導,將最讚賞。

在此先感謝。

回答

0

確保您的類型實現了INotifyPropertyChanged接口和你火在其上DataTrigger勢必在修改顏色到您的公開暴露setter方法的變更通知。

編輯:下面是使用TextBoxButton來改變顏色的例子...

C#:

public partial class Window1 : Window 
{ 
    MyData _data = new MyData(); 

    public Window1() 
    { 
     InitializeComponent(); 

     this.DataContext = _data; 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     _data.ChangeColor(); 
    } 
} 

    public class MyData : INotifyPropertyChanged 
    { 
     Random _rand = new Random(); 
     List<String> _colors = new List<string> { "Red", "Black", "Blue" }; 

     public void ChangeColor() 
     { 
      MyColor = _colors[_rand.Next(0, 3)]; 
     } 

     private bool _isActive = true; 
     public bool IsActive 
     { 
      get 
      { 
       return _isActive; 
      } 
      set 
      { 
       _isActive = value; 
       PropertyChangedEventHandler h = PropertyChanged; 
       if (h != null) 
        h(this, new PropertyChangedEventArgs("IsActive")); 
      } 
     } 


     private String _myColor = "Green"; 
     public String MyColor 
     { 
      get 
      { 
       return _myColor; 
      } 
      set 
      { 
       _myColor = value; 
       PropertyChangedEventHandler h = PropertyChanged; 
       if (h != null) 
        h(this, new PropertyChangedEventArgs("MyColor")); 
      } 
     } 

     #region INotifyPropertyChanged Members 

     public event PropertyChangedEventHandler PropertyChanged; 

     #endregion 
    } 
} 

XAML:

<Grid> 
     <Button Height="25" Click="Button_Click" Content="Change Color" VerticalAlignment="Bottom" /> 
     <TextBox Width="200" Height="100"> 
      <TextBox.Style> 
       <Style> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding IsActive}" Value="true"> 
          <Setter Property="TextBox.Background" Value="{Binding MyColor}"/> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </TextBox.Style> 
     </TextBox> 
    </Grid> 
+0

感謝這個收集數據觸發器正在努力實現INotifyPropertyChanged它的設置我有問題,會受益於有他的財產也使用這個? – Emlyn 2011-02-15 20:13:59