WOOOOOOOOOOOOOOOOT!!! Ca marche! Enfin!
Voilà ce que j'ai fait:
MainWindow.xaml
1 2 3 4 5 6 7 8 9 10 11
| <DataGrid ItemsSource="{Binding messages}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Text history" MinWidth="100" Width="*" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Message}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid> |
MainWindow.xaml.cs
myMessageList.AddMessage(new monMessage(InputTextBox.Text));
MessageList.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public event PropertyChangedEventHandler PropertyChanged;
public delegate void MessageChangeDelegate(ObservableCollection<monMessage> s);
public ObservableCollection<monMessage> messages { get; set; }
public event MessageChangeDelegate myMessageChangeDelegate;
[...]
public void AddMessage(monMessage s)
{
messages.Add(s);
if (myMessageChangeDelegate != null) //Site du 0
{
myMessageChangeDelegate(messages);
}
} |
monMessage.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
class monMessage : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string message;
public monMessage(string s)
{
message = s;
}
public string Message
{
get { return message; }
set
{
message = value;
if (PropertyChanged != null) OnNotifyPropertyChanged("Message");
}
}
protected virtual void OnNotifyPropertyChanged(string propName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}
} |
Les seuls changements dont je me rappelle sont que j'ai ajouté le DataContext à un new MessageList et remplacé MessageList par messages dans la balise du DataGrid. Mais je suis sûr que j'ai des morceaux de code en trop dans mon projet par rapport à cette fonctionnalité parce que je n'ai pas trop compris le fonctionnement derrière. En fait, mon enseignant nous a donné un projet très complexe en guise d'exemple, qui rapatrie des données d'Internet. Mais il l'est tellement qu'il me désoriente plus qu'il ne m'est utile...
Edit: Ah oui! J'ai du aussi rajouter la classe monMessage.cs pour me conformer au projet exemple, mais je ne sais pas si c'est possible de faire sans...
Partager