2011-12-20 7 views
0

이번에는 도움말 창 미니 응용 프로그램 (다른 프로젝트의 이미지 편집 응용 프로그램에 포함)을 작성하고 있습니다.XAML 만있는 트리 뷰에서 리소스를 flowdocumentreader에 바인딩하는 방법?

두 개의 열이있는 그리드와 그리드 스플리터가 있습니다. 왼쪽에는 여러 노드 (XAML로 설정)가있는 treeview가 있고 오른쪽에는 flowdocumentreader가 있습니다.

나는 내 문서를 보관할 약 10 개의 리소스 소지자가있다. 각 노드마다 하나씩, 나는 flowdocumentreader에 표시하고 싶다. 나는 실제로 이것을 묶는 방법을 모른다. 아무도 내가 어떻게이 일을 할 수 있을지 생각하지 않아? 내 코드는 지금까지

 <Window.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary x:Name="About" Source="About.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Window.Resources> 
<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="auto"/> 
     <ColumnDefinition Width="auto"/> 
     <ColumnDefinition Width="500"/> 
    </Grid.ColumnDefinitions> 
    <GridSplitter HorizontalAlignment="Right" 
       VerticalAlignment="Stretch" 
       Grid.Column="1" ResizeBehavior="PreviousAndNext" ResizeDirection="Columns" 
       Width="5" Background="#FFBCBCBC"/> 
    <TreeView Width="250" Grid.Column="0" FontFamily="Segoe UI" FontSize="16"> 
     <TreeViewItem Header="Help"> 
      <TreeViewItem Header="About the application"></TreeViewItem> 
      <TreeViewItem Header="Getting started"></TreeViewItem> 
      <TreeViewItem Header="Images from Flickr"></TreeViewItem> 
      <TreeViewItem Header="Images from the computer"></TreeViewItem> 
      <TreeViewItem Header="Images from the browser"></TreeViewItem> 
      <TreeViewItem Header="Editing"> 
       <TreeViewItem Header="Open and Save"></TreeViewItem> 
       <TreeViewItem Header="Uploading"></TreeViewItem> 
       <TreeViewItem Header="Crop"></TreeViewItem> 
       <TreeViewItem Header="Resize"></TreeViewItem> 
       <TreeViewItem Header="Filters"></TreeViewItem> 
       <TreeViewItem Header="Adding text"></TreeViewItem> 
       <TreeViewItem Header="Remove red eyes"></TreeViewItem> 
      </TreeViewItem> 
     </TreeViewItem> 
    </TreeView> 
    <FlowDocumentReader Grid.Column="2" > 

    </FlowDocumentReader> 
</Grid> 

답변

0

당신은 문자열 값을 정의하는 노드의 태그 속성을 사용할 수 로드 할 (단 하나의 ResourceDictionary에 추가). 그런 다음 선택한 노드의 태그에 바인딩을 수행하십시오.

<TreeView x:Name="documentTreeView" Width="250" Grid.Column="0" FontFamily="Segoe UI" FontSize="16"> 
    <TreeViewItem Header="Help"> 
     <TreeViewItem 
     Header="About the application" 
     Tag="ResDict1.xaml"></TreeViewItem> 

....

<FlowDocumentReader Document="{Binding ElementName=documentTreeView, Path=SelectedItem.Tag, Converter={StaticResource stringToFlowDocumentConverter}}" Grid.Column="2" /> 
: 당신이 다음 변환기를 사용하는 경우

당신은 당신의 문서 파일/res.Dict 콘텐츠 또는 무엇이든을로드 할 수 있습니다