2013-07-12 1 views
0

TreeView에서 일부 XML 데이터를 표시하려고합니다. Xml 데이터는 XmlDataProvider 유형의 ViewModel 속성에서 제공됩니다. 그러나 TreeView 함께 바인딩 할 수 없습니다. XAML에서 XmlDataProvider를 사용하고 있으며 XAML에서 ViewModel 속성을 XmlDataProvider와 바인딩 할 수 없습니다.보기에서 XmlDataProvider를 사용하여 viewmodel의 XmlDataProvider 속성을 바인딩하는 방법은 무엇입니까?

public class MainViewModel : ViewModelBase { 


    private static XmlDataProvider xDoc; 
    public static XmlDataProvider XDoc { 
     get { 
     return xDoc; 
     } 
     set { 
     xDoc = value; 
     RaisePropertyChanged("XDoc"); 
     } 

    } 


    public MainViewModel() { 
     Data d = new Data(); 
     d.int1 = 12; 
     d.int2 = 20; 
     d.str = "Hello World"; 

     XmlSerializer serializer = new XmlSerializer(d.GetType()); 
     StringWriter strWriter = new StringWriter(); 
     serializer.Serialize(strWriter, d); 
     XDoc = new XmlDataProvider { Document =XDocument.Parse(strWriter.ToString()).ToXmlDocument(), XPath="child::node"} ;  
    } 
    } 

XAML 코드 : 내가 MVVM 빛 프레임 워크를 사용하고

<XmlDataProvider x:Key="xmlDP" Source="{ x:Static A:MainViewModel.XDoc}" XPath=""> 
    </XmlDataProvider> 
<TreeView Grid.Row="2" Grid.ColumnSpan="2" Name="xmlTree" 
     DataContext="{StaticResource xmlDP}" ItemsSource="{Binding}" ItemTemplate="{StaticResource treeViewTemplate}"/> 

아래는 코드입니다. 시도 할 때 XDoc 속성이 정적이어야하고 정적으로 만들고 싶지 않다는 예외가 있습니다. 내 X를 정의하면

: XAML 파일 내에서 XmlDataProvider 내부 데이터는 트 리뷰 작품 : 당신은 트리 뷰에서 XML 데이터를 보여주는 done..means로 원하는 작업을 수행이 링크 것 말이다

<XmlDataProvider x:Key="xmlDP" XPath=""> 
      <x:XData> 
       <Employees> 
        <Employee Name="Steven Ballmer" DOB="1-Mar-1956"> 
         <Title>CEO</Title> 
        </Employee> 
       </Employees> 
      </x:XData> 
     </XmlDataProvider> 

<TreeView Grid.Row="2" Grid.ColumnSpan="2" Name="xmlTree" 
      DataContext="{StaticResource xmlDP}" ItemsSource="{Binding}" ItemTemplate=" {StaticResource treeViewTemplate}"/> 
+0

[1] 나는 그가 생각 [이 링크를 확인] http://stackoverflow.com/questions/1017843/how-to-bind-an-xmldataprovider-class-property-to-a-xaml-treeview – loop

+0

링크 .. [1]을 LP로 언급 한 MVVM 아키텍처를 따르지 않습니다. 코드에서 많은 일들이 이루어졌습니다. – User1551892

+0

괜찮아요 먼저 괜찮아요 mainviewmodel 페이지 datacontext 설정 (당신이 해줬 으면 좋겠) 이제 treeview xdoc 속성에 액세스 할 수 – loop

답변

0

을 확인해 :

public class MainViewModel : ViewModelBase { 


    private XmlDocument xDoc; 
    public XmlDocument XDoc { 
     get { 
     return xDoc; 
     } 
     set { 
     xDoc = value; 
     RaisePropertyChanged("XDoc"); 
     } 
    } 

    public MainViewModel() { 
     Data d = new Data(); 
     d.int1 = 12; 
     d.int2 = 20; 
     d.str = "Hello World"; 


     XmlSerializer serializer = new XmlSerializer(d.GetType()); 
     StringWriter strWriter = new StringWriter(); 
     serializer.Serialize(strWriter, d); 
     XDoc = XDocument.Parse(strWriter.ToString()).ToXmlDocument() ; 
    } 
    } 

<TreeView Grid.Row="2" Grid.ColumnSpan="2" Name="xmlTree" 
       ItemsSource="{Binding XDoc}" ItemTemplate="{StaticResource treeViewTemplate}"/> 
0

check this link 내가 XMLDataProvider를 사용하고 모든 것이 예상대로 작동에만 XMLDoxument를 사용하지 않는 경우 ..so 단지 ..

관련 문제