DataBinding FIleInfo[] Listview vers RichTextBox
Bonjour à tous,
Voici mes 2 usercontrols:
Lieu où j'affiche mes fichiers via
<UserControl ...>
<ListView x:Name="lvwFiles" Grid.Row="1" ItemsSource="{Binding Files}" >
<ListView.View>
<GridView>
<GridViewColumn Header="Nom du fichier" Width="Auto" DisplayMemberBinding="{Binding Name}" CellTemplateSelector="{Binding ShowFileContent}" />
</GridView>
</ListView.View>
</ListView>
</userControl>
Lieu où doit être afficher le contenu de l'item sélectionné:
Code:
1 2 3 4 5
| <UserControl ...>
<grid>
<RichTextBox Grid.Row="1" Grid.ColumnSpan="3" IsEnabled="False" Document="{Binding ElementName=ViewType, Path=SelectedItem.Tag}" />
</Grid>
</UserControl> |
Et voici ma ViewModel du ListView:
Code:
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
class FileVM : ObservableCollection<FileModel>
{
#region properties
private FileInfo[] _files;
public FileInfo[] Files
{
get { return _files; }
set { _files = value; OnPropertyChanged("Files"); }
}
private bool _isFileSelected;
public bool IsFileSelected
{
get { return _isFileSelected; }
set { _isFileSelected = value; OnPropertyChanged("IsFileSelected"); }
}
private FileModel _selectedFile;
public FileModel SelectedFile
{
get { return _selectedFile; }
set
{
_selectedFile = value;
OnPropertyChanged("SelectedFile");
}
}
#endregion
#region constructor
public FileVM()
{
}
#endregion
#region method
public void ShowContent()
{
if(_isFileSelected)
{
ReadFilesController rfc = new ReadFilesController(_selectedFile.Files.ToString());
}
}
#endregion
#region PropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
} |
Mon but étant de lire les lignes et les écrire dans mon richtextbox (en lecture/écriture) voici mon "helpers":
Code:
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
class ReadFilesController : INotifyPropertyChanged
{
#region properties
private string _filepath;
public string Filename
{
get { return _filepath; }
set { _filepath = value; OnPropertyChanged("Filename"); }
}
#endregion
#region constructor
public ReadFilesController(string filename)
{
_filepath = filename;
}
#endregion
#region methods
public void Reader()
{
try
{
using ()
{
string line = "";
while ()
{
}
}
}
catch (Exception ex)
{
}
}
#endregion
#region PropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
} |
(oui, je sais, il n'est pas encore finit x) )
Le problème que j'ai est que je n'arrive pas à me schématisé ça correctement pour pouvoir faire un code propre sur: sélectionné l'élément -> envoyer à mon helpers <-> (récupérer par mon viewmodel? <->) récupérer dans mon second usercontrol qui contient ma richtextbox et binder le contenu.
Je bloque même aux premières étapes j'ai l'impression, lorsque je sélectionne, je suis même pas (enfin si, j'utilise mon debug) de passer dans _isSelected = True; selectedItem = l'item sélectionné. J'sais pas si je suis assez clair :mouarf: