2011-03-08 5 views
0

xaml에서 객체를 인스턴스화하려고합니다. 객체의 클래스는 기본 클래스에서 상속됩니다. 기본 클래스 속성 ("Key")이 xaml에서 올바르게 설정되지 않는다는 점을 제외하고는 모두 잘 작동합니다. 항상 null입니다. 객체의 속성 자체는 xaml에서 OK로 설정됩니다. 또한 코드에서 Key 속성을 설정하면 잘 설정됩니다.xaml에서 객체를 만들 때 기본 클래스 속성이 항상 null입니다.

MainWindow 메서드의 닫는 괄호에 중단 점을 넣어 개체 데이터를 봅니다. 호버 세부 정보는 Key 속성이 항상 null임을 나타냅니다.

내가 잘못하고있는 아이디어가 있습니까?

<?xml version="1.0" encoding="utf-8" ?> 
<GroupUiItem xmlns="clr-namespace:Configurator.UiCore" 
     Key="key_grp1" UserName="grp1"> 
    <ParameterUiItem Key="key_par1" UserName="par1"/> 
    <GroupUiItem Key="key_grp2" UserName="grp2"> 
     <ParameterUiItem Key="key_par2" UserName="par2"/> 
     <ParameterUiItem Key="key_par3" UserName="par3"/> 
    </GroupUiItem> 
    <ParameterUiItem Key="key_par4" UserName="par4"/> 
    <ParameterUiItem Key="key_par5" UserName="par5"/> 
    <ParameterUiItem Key="key_par6" UserName="par6"/> 
</GroupUiItem> 

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     GroupUiItem ConfigUi = new GroupUiItem(); 

     InitializeComponent(); 

     using (FileStream stream = new FileStream("XMLFile1.xaml", FileMode.Open, FileAccess.Read)) 
     { 
      ConfigUi = XamlReader.Load(stream) as GroupUiItem; 
     } 
     ConfigUi.Key = "key_grp1"; // this works OK 

     CategoryList.ItemsSource = ConfigUi.Children; 
    } 
} 

// These are in the Configurator.UiCore namespace: 

public class ConfiguratorUiItem 
{   
    protected string _Key; 
    public string Key 
    { 
     get { return _Key; } 
     set { _Key = value; } 
    } 
} 

[ContentProperty("Children")] 
public class GroupUiItem : ConfiguratorUiItem 
{   
    private ObservableCollection<ConfiguratorUiItem> _Children = new ObservableCollection<ConfiguratorUiItem>(); 
    public ObservableCollection<ConfiguratorUiItem> Children 
    { get { return _Children; } 
     set { _Children = value; } 
    } 

    private string _UserName; 
    public string UserName 
    { get { return _UserName; } 
     set { _UserName = value; } 
    } 
} 

public class ParameterUiItem : ConfiguratorUiItem 
{ 
    private string _ParameterType; 
    public string ParameterType 
    { 
     get { return _ParameterType; } 
     set { _ParameterType = value; } 
    } 

    private string _UserName; 
    public string UserName 
    { 
     get { return _UserName; } 
     set { _UserName = value; } 
    } 
} 

답변

0

제 문제를 파악했습니다. 멍청한 실수. 빌드 조치를 없음으로 설정하고 항상 복사해야합니다. 느슨한 xaml이 아니므로 적절한 폴더로 업데이트하지 않도록 페이지에 설정된 동작을 빌드해야했습니다. xaml 파일을 출력 디렉토리에 수동으로 복사 할 수 없었습니다. 이로 인해 프로그램에서 항상 이전 파일을 사용하게되었습니다.

내가했을 때 "xmlns ="clr-namespace : Configurator.UiCore; assembly = Configurator "라고 읽도록 xmlns의 끝에"; assembly = Configurator "를 추가해야했습니다. .

관련 문제