2016-08-18 14 views
0

私はWPFアプリケーションを構築しようとしています。私はちょっとしたスクランブルを実行しました。ユーザーコントロールを保存して読み込みます

だから私は次のコードを持っている:ユーザーがUIと相互作用するとき、彼はdinamicallyいくつかを追加しますので、

<StackPanel Name="OfferStackPanel"> 
        <TextBlock Name="OfferNameTextBlock" 
           Text="" 
           Margin="2,10,2,10" 
           HorizontalAlignment="Center" 
           TextAlignment="Center" 
           FontSize="20" 
           MaxWidth="800" 
           TextWrapping="Wrap"/> 
        <StackPanel Name="SuppliersStackPanel" 
         MinWidth="1302" 
         MaxWidth="1302" 
       ></StackPanel> 
        <Image x:Name="Logo" 
          HorizontalAlignment="Right" Source="logo.ico" 
          MaxWidth="100" 
          Margin="20,20,10,20" 
          /> 
</StackPanel> 

<Grid Name="SupplierUc"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="40"/> 
      <RowDefinition Height="30"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="13"/> 
      <ColumnDefinition Width="102"/> 
      <ColumnDefinition Width="360*"/> 
      <ColumnDefinition Width="100"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock Grid.Column="1" 
        Grid.Row="0" 
        Text="Producator" 
        VerticalAlignment="Center" 
        ></TextBlock> 
     <TextBox Name="SupplierNameTextBox" 
      Grid.Column="2" 
       Grid.Row="0" 
       FontStyle="Italic" 
       VerticalContentAlignment="Center" 
       FontSize="25" 
       MaxWidth="300" 
       Width="300" 
       Foreground="Red" 
       HorizontalAlignment="Left" 
       Margin="0,3,0,3" 
       /> 
     <Button Name="AddCategoryButton" 
       Click="AddCategoryUc" 
       Grid.Column="1" 
       Grid.ColumnSpan="2" 
       Grid.Row="1" 
       FontSize="15" 
       Height="30" 
       MaxHeight="30" 
       Width="130" 
       MaxWidth="130" 
       Content="Adauga Categorie" 
       HorizontalAlignment="Left" 
       Background="{x:Null}" 
       BorderBrush="{x:Null}" 
       Foreground="#FF6270F5" Cursor="Hand" 
       /> 

     <Button Name="DeleteSupplierRowButton" 
       Grid.Row="0" 
       Grid.Column="3" 
       Content="Sterge Producator" 
       Background="{x:Null}" 
       BorderBrush="{x:Null}" 
       Click="RemoveSupplierUc" 
       Foreground="#FFF50F0F" 
       Cursor="Hand" 
      /> 
      <StackPanel Grid.Row="2" 
        Grid.Column="1" 
        Grid.ColumnSpan="3" 
        Name="CategoryPanel" 
      ></StackPanel> 
    </Grid> 

<Grid Name = "CategoryUC"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="40"/> 
      <RowDefinition Height="30"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="13"/> 
      <ColumnDefinition Width="102"/> 
      <ColumnDefinition Width="360*"/> 
      <ColumnDefinition Width="100*" /> 
      <ColumnDefinition Width="100"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock Grid.Column="1" 
        Grid.Row="0" 
        Text="Categorie" 
        VerticalAlignment="Center" 
        ></TextBlock> 
     <TextBox Name="CategoryNameTextBox" 
       Grid.Column="2" 
       Grid.ColumnSpan="2" 
       Grid.Row="0" 
       FontSize="20" 
       VerticalContentAlignment="Center" 
       MinWidth="300" 
       Width="Auto" 
       Foreground="Black" 
       HorizontalAlignment="Left" 
       Margin="0,3,0,3" 
       /> 
     <Button Name="DeleteSupplierRowButton" 
       Grid.Row="0" 
       Grid.Column="4" 
       Content="Sterge Categorie" 
       Background="{x:Null}" 
       BorderBrush="{x:Null}" 
       Click="RemoveCategoryUc" 
       Foreground="#FFF50F0F" 
       Cursor="Hand" 
      /> 
     <Button Name="AddOptionUcButton" 
       Grid.Column="1" 
       Grid.Row="1" 
       Content="Adauga Optiune" 
       Click="AddOptionUc" 
       Height="20" 
       Width="100" 
       Background="{x:Null}" 
       BorderBrush="{x:Null}" 
       Foreground="Black" 
       Cursor="Hand" 
       Margin="1,1,1,1"/> 
     <UniformGrid Grid.Row="2" 
        Columns="2" 
        Grid.Column="1" 
        Grid.ColumnSpan="4" 
        ClipToBounds="True" 
        Name="OptionItems"> 
     </UniformGrid> 
    </Grid> 

をOfferStackPanelへのSupplierUc、および各SupplierUcに対するいくつかのCategoryUc。

最終的なOfferStackPanelを保存して、いつでもプロジェクトにリロードする必要があります。編集する可能性があります。あなたはおそらく探しているものだ

+0

これは実際にはどのような環境でも、特にWPFではなかなかできないことです。サプライヤとカテゴリのコレクション、情報を伝えるだけの簡単なPOCOクラスを保存する必要があります。それらをXML、DBレコード、JSONなどで保存します。後でそれらをリロードするときは、DataTemplatesを介してItemsControlsに表示されるビューモデルをインスタンス化します。これは、MVVMを使用すると簡単に簡単です。あなたがしていることは「シンプル」なようですが、私は経験から教えてくれます。それはあなたに多くの苦痛を与えます。 –

+0

これは非常に良い答えですが、カテゴリUCの下にはレイヤーが増えており、各レイヤーには動的に生成されるデータがたくさんあります。私はデータベースを使用しないように制限されており、現時点で可能な最後のアプローチとしてMVVMを検討しています。 –

+0

私はあなたが記述していることは、MVVMのために作られたものであり、データをXMLに格納していると言います。いくつかのDataTemplatesを書くことは決して私の年齢を取らなかった。しかし、あなたがそれを過去に両方の方法でやっていて、あなたが提案している方法でそれをやりやすくしたら、私は論じません。しかし、自分の経験から、あなたの計画は、高速道路がその周りを迂回するため、密林を通ってまっすぐ進むことを選択するようなものであることが示唆されます。 –

答えて

0

Edは、実際に私にPOCOのclasesを使用するためのアイデアを与えたと私は、ユーザー入力をカスタムクラスを作成し、情報をマッピングすることにより、私が欲しかったものを行うために管理しましたxmlファイルにシリアライズします。ファイルをロードすると、モデルでデシリアライズした後、XMLに含まれているデータで要素を再構築します。

関連する問題