<ListBox x:Name="Spot1listBox" Style="{StaticResource BlockListbox}" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="8" > <ListBoxItem Style="{StaticResource ListboxItemBlockStyle}" > </ListBoxItem> </ListBox
<Style TargetType="ListBox" x:Key="BlockListbox"> <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/> <Setter Property="ItemsPanel"> <Setter.Value> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal" ScrollViewer.CanContentScroll="False" Margin="0"/> </ItemsPanelTemplate> </Setter.Value> </Setter> </Style> <Style TargetType="ListBoxItem" x:Key="ListboxItemBlockStyle" > <Setter Property="Padding" Value="-15"/> <Setter Property="HorizontalContentAlignment" Value="Left"/> <Setter Property="HorizontalAlignment" Value="Left"/>
[Serializable] public partial class BlockDirect : UserControl, ISerializable
public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("direct", direct.Name); info.AddValue("Spot1", Spot1listBox.Items); info.AddValue("Spot2", Spot2listBox.Items); info.AddValue("Spot3", Spot3listBox.Items); info.AddValue("Spot4", Spot4listBox.Items); info.AddValue("Spot5", Spot5listBox.Items); info.AddValue("Spot6", Spot6listBox.Items); info.AddValue("patch1", SpotAdr1listBox.Items); info.AddValue("patch2", SpotAdr2listBox.Items); info.AddValue("patch3", SpotAdr3listBox.Items); info.AddValue("patch4", SpotAdr4listBox.Items); info.AddValue("patch5", SpotAdr5listBox.Items); info.AddValue("patch6", SpotAdr6listBox.Items); info.AddValue("notes1", Spot1DmxLbl.Content); info.AddValue("notes2", Spot2DmxLbl.Content); info.AddValue("notes3", Spot3DmxLbl.Content); info.AddValue("notes4", Spot4DmxLbl.Content); info.AddValue("notes5", Spot5DmxLbl.Content); info.AddValue("notes6", Spot6DmxLbl.Content); info.AddValue("CircuitName", Circuit1Cbx.Items); info.AddValue("CircuitNameSelected", Circuit1Cbx.SelectedItem); info.AddValue("totalph1", Ph1TotalWattLbl.Content); info.AddValue("totalph2", Ph2TotalWattLbl.Content); info.AddValue("totalph3", Ph3TotalWattLbl.Content); info.AddValue("totalamp1", Ph1TotalAmpLbl.Content); info.AddValue("totalamp2", Ph2TotalAmpLbl.Content); info.AddValue("totalamp3", Ph3TotalAmpLbl.Content); info.AddValue("ZoneName", ZoneCbx.Items); }
private void SaveBlockBtn_Click(object sender, RoutedEventArgs e) { Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); dlg.FileName = "UIElement File"; dlg.DefaultExt = ".json"; dlg.Filter = "Json File (.json)|*.json"; Nullable<bool> result = dlg.ShowDialog(); BlockDirect test = new BlockDirect(); if (result == true) { string filename = dlg.FileName; string outputJSON = JsonConvert.SerializeObject(PatchStackPnl.Children); File.WriteAllText(filename, outputJSON); } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionEn fait je sérialise bien les données qui sont dans le usercontrol, ce n'était pas le cas quand tu faisais du xml, le morceau de fichier que tu as posté au message 2 montre clairement que c'était le contrôle qui était sérialisé.
string outputJSON = JsonConvert.SerializeObject(PatchStackPnl.Children);j'ai bien l'impression que c'est pareil, puisque le "Children" d'un StackPanel est un normalement un contrôle.
public class BlockRootObject { public string CircuitNameSelected { get; set; } public string ZoneNameSelected { get; set; } public bool l1Check { get; set; } public bool l2Check { get; set; } public bool ZoneCheck { get; set; } public Point Position { get; set; } }
public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("CircuitNameSelected", Circuit1Cbx.SelectedItem); info.AddValue("ZoneNameSelected", ZoneCbx.SelectedItem); info.AddValue("l1Check", L1.IsChecked); info.AddValue("l2Check", L2.IsChecked); info.AddValue("ZoneCheck", TotalZoneChk.IsChecked); info.AddValue("Position", Direct.TransformToAncestor(mainWindow.PatchStackPnl).Transform(new Point(0, 0))); }
protected BlockDirect(SerializationInfo info, StreamingContext context) { BlockDirect blockdirect = new BlockDirect(); blockdirect.Circuit1Cbx.SelectedItem = (string)info.GetValue("CircuitNameSelected", typeof(string)); blockdirect.ZoneCbx.SelectedItem = (string)info.GetValue("ZoneNameSelected", typeof(string)); blockdirect.L1.IsChecked = (bool)info.GetValue("l1Check", typeof(bool)); blockdirect.L2.IsChecked = (bool)info.GetValue("l2Check", typeof(bool)); blockdirect.TotalZoneChk.IsChecked = (bool)info.GetValue("ZoneCheck", typeof(bool)); var currentpoint = blockdirect.TransformToAncestor(mainWindow.PatchStackPnl).Transform(new Point(0, 0)); currentpoint = (Point)info.GetValue("Position", typeof(Point)); }
List<BlockDirect.BlockRootObject> BlockList = JsonConvert.DeserializeObject<List<BlockDirect.BlockRootObject>>(text); for (int i = 0; i < BlockList.Count; i++) { BlockDirect blockDirect = new BlockDirect(); blockDirect.WireBox.Foreground = Brushes.Black; blockDirect.BlockBox.Foreground = Brushes.Black; blockDirect.TotalZoneBox.Foreground = Brushes.Black; blockDirect.TotalMulti.Foreground = Brushes.Black; blockDirect.Circuit1Cbx.SelectedItem = (BlockList[i].CircuitNameSelected); blockDirect.ZoneCbx.SelectedItem = (BlockList[i].ZoneNameSelected); blockDirect.L1.IsChecked = (BlockList[i].l1Check); blockDirect.TotalZoneChk.IsChecked = (BlockList[i].ZoneCheck); PatchStackPnl.Children.Add(blockDirect); }
Modifié le 21 oct. 2019 à 19:24
désolé pour la réponse tardive mais en ce moment j'ai énormément de boulot et malheureusement très peu de temps pour moi.
Une Partie xaml du userControl (pas tout car il est juste énorme)
Et voici egalement unepartie du Xml:
bien evidement s'il te faut l'integralité je te renverrais tout.
Tout mes controles se remplissent en fonctions de differentes requetes Sql dans le code Behind.........
Merci d'avance pour tes reponses ou tes elements de piste, j'avoue que je suis perdu.
Bonne fin de journée a toi.