Je ne sais pas comment vous essayez de faire this.Any façon dont je l'ai essayé et il fonctionne fine.Check ce code et de trouver ce qui se passe mal
Xaml:
<StackPanel Loaded="StackPanel_Loaded" >
<StackPanel.Resources>
<WpfApplication50:ValueToForegroundColorConverter x:Key="valueToForegroundColorConverter"/>
<DataTemplate x:Key="Valuetemplate">
<TextBlock x:Name="txt" Text="{Binding Value}" Foreground="{Binding Path=Value,Converter={StaticResource valueToForegroundColorConverter}}"/>
</DataTemplate>
</StackPanel.Resources>
<dtgrd:DataGrid ItemsSource="{Binding Source}"
Name="datagrid"
ColumnHeaderHeight="25"
AutoGenerateColumns="False"
>
<dtgrd:DataGrid.Columns>
<dtgrd:DataGridTemplateColumn CellTemplate="{StaticResource Valuetemplate}" Header="Value"/>
</dtgrd:DataGrid.Columns>
</dtgrd:DataGrid>
<Button Height="30" Click="Button_Click"/>
</StackPanel>
et dans votre codebehind
public partial class Window10 : Window,INotifyPropertyChanged
{
private DataTable source;
public DataTable Source
{
get { return source; }
set { source = value; OnPropertyChanged("Source"); }
}
public Window10()
{
InitializeComponent();
this.DataContext = this;
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string name)
{
if(PropertyChanged!=null)
PropertyChanged(this,new PropertyChangedEventArgs(name));
}
#endregion
private void Button_Click(object sender, RoutedEventArgs e)
{
Source.Rows.Add("-1");
}
private void StackPanel_Loaded(object sender, RoutedEventArgs e)
{
Source = new DataTable();
Source.Columns.Add("Value");
Source.Rows.Add("1");
}
}
également ce convertisseur
class ValueToForegroundColorConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
SolidColorBrush brush = new SolidColorBrush(Colors.Black);
int val = 0;
int.TryParse(value.ToString(), out val);
if (val < 0)
brush = new SolidColorBrush(Colors.Red);
return brush;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
Il est plus facile pour nous de vous aider avec une réponse si vous fournissez un exemple de code reproduisant le problème –
Oui ... Un code serait certainement utile – biju