2017-09-25 2 views
-1

C# (WPF)에서 MVVM을 사용하여 응용 프로그램을 만들었습니다. XML에서 WPF로 사용자 인터페이스를 serialize 및 deserialize 할 때 오류가 발생합니다.UserControl을 직렬화 및 비 직렬화 할 수 없습니다.

나는 동적으로 컨트롤을 추가하고 있지만, 이미지와 같이 직렬화 복원에 나에게 오류를주고있다 :

가 여기 내 코드입니다. 직렬화 및 비 직렬화 작업을 도와주세요.

<UserControl x:Class="DecisionSuite.Creator.SetValue" 
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
       xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
       xmlns:local="clr-namespace:DecisionSuite.Creator" 
       mc:Ignorable="d" 
       d:DesignHeight="360" d:DesignWidth="800"> 
     <UserControl.Resources> 
      <DataTemplate x:Key="SelectionTemplate">   
       <local:SetValueSet ></local:SetValueSet> 
      </DataTemplate> 
     </UserControl.Resources> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="2*"/> 
       <RowDefinition Height="8*"/> 
       <RowDefinition Height="2*"/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition/> 
       <ColumnDefinition/> 
      </Grid.ColumnDefinitions> 
      <Border BorderThickness="1" Grid.Row="0" BorderBrush="LightGray" Background="LightGray" Grid.ColumnSpan="2"/> 
      <Viewbox Grid.Row="0" Grid.ColumnSpan="2"> 
       <TextBlock Margin="5" Text="Set Value"/> 
      </Viewbox> 
      <Border BorderThickness="1,1,1,1" Grid.Row="1" BorderBrush="LightGray"> 
       <ItemsControl ItemTemplate="{StaticResource SelectionTemplate}" ItemsSource="{Binding SetValueModels}"/>    
      </Border> 
      <Grid Grid.Row="1"> 
      </Grid> 
      <Border BorderThickness="1,0,1,1" Grid.Row="2" BorderBrush="LightGray" Grid.ColumnSpan="2"/> 
      <Button Grid.Row="2" Grid.ColumnSpan="2" Command="{Binding RefreshList}"> 
       <Viewbox > 
        <TextBlock Text="Add New Item" Margin="0" Padding="5" RenderTransformOrigin="1.079,1.079"></TextBlock> 
       </Viewbox> 
      </Button> 
     </Grid> 
    </UserControl> 
+0

프레스 세부 정보를 클립 보드에 복사합니다. 그런 다음 메모장과 "붙여 넣기"를 엽니 다. 메모장에서 예외를 게시하십시오. 명령어를 3 줄로 나누면 명령어의 어느 부분이 실패했는지 알 수 있습니다. – jdweng

+0

아래 오류가 발생했습니다 ... LineNumber = 1 LinePosition = 918 메시지 = 'System.Windows.ResourceDictionary'유형의 개체에 'System.Windows.DataTemplate'형식의 콘텐츠를 추가 할 수 없습니다. 'SelectionTemplate'개체의 줄 1 위치 918에 오류가 있습니다. NameContext = Resources Source = PresentationFramework –

+0

줄 위치 918이 어디에 있는지 알 수 없습니다. 이 오류는 xml이 xaml과 호환되지 않기 때문에 발생했을 수 있습니다. 지침을 조각으로 나누고 918이 어디에 있는지 찾아보십시오. – jdweng

답변

1

당신은 ... 사용자 컨트롤을 직렬화하지만, 사용자 컨트롤이 등 텍스트 상자, 버튼처럼, 기본적으로 사용자 인터페이스이기 때문에 대신, 자신의 데이터를 직렬화 안

당신은 데이터가 다시 필요한 serialize해야

사용자 컨트롤 만 만들고 사용자 정의 컨트롤을 디자인하여 직렬화 된 데이터 및 새 사용자 컨트롤로 재구성 할 수 있도록합니다. 그렇다면 문제가 해결 될 것입니다.

관련 문제