2011-07-25 16 views
0

System.Windows.Controls.DocumentViewerを使用してFixedDocumentを表示したいTallComponents.PDF.Rasterizerを使用してPDFファイルから作成しました。これは機能していますが、無効にするか、またはDocumentViewerコントロールで表示されるツールバーボタンの一部を削除します。私はテンプレートのexmapleをhereから使用しています。テンプレート化された親にネストされたコントロールのコンテンツを使用するためにバインドできますか?

<Style x:Key="{x:Type DocumentViewer}" 
     TargetType="{x:Type DocumentViewer}"> 
    <Setter Property="Foreground" 
     Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" /> 
    <Setter Property="Background" 
     Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" /> 
    <Setter Property="FocusVisualStyle" 
      Value="{x:Null}" /> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type DocumentViewer}"> 
     <Border BorderThickness="{TemplateBinding BorderThickness}" 
       BorderBrush="{TemplateBinding BorderBrush}" 
       Focusable="False"> 
      <Grid KeyboardNavigation.TabNavigation="Local"> 
      <Grid.Background> 
       <SolidColorBrush Color="{DynamicResource ControlLightColor}" /> 
      </Grid.Background> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="*" /> 
       <RowDefinition Height="Auto" /> 
      </Grid.RowDefinitions> 
      <ToolBar ToolBarTray.IsLocked="True" 
        KeyboardNavigation.TabNavigation="Continue"> 
       <Button Command="NavigationCommands.IncreaseZoom" 
    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" 
         Content="Zoom In" /> 
       <Button Command="NavigationCommands.DecreaseZoom" 
    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" 
         Content="Zoom Out" /> 
       <Separator /> 
       <!-- 
       <Button Command="NavigationCommands.Zoom" 
    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" 
         CommandParameter="100.0" 
         Content="Actual Size" /> 
       --> 
       <Button Command="DocumentViewer.FitToWidthCommand" 
    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" 
         Content="Fit to Width" /> 
       <Button Command="DocumentViewer.FitToMaxPagesAcrossCommand" 
    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" 
         CommandParameter="1" 
         Content="Whole Page" /> 
       <Button Command="DocumentViewer.FitToMaxPagesAcrossCommand" 
    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" 
         CommandParameter="2" 
         Content="Two Pages" /> 
      </ToolBar> 
      <ScrollViewer Grid.Row="1" 
          CanContentScroll="true" 
          HorizontalScrollBarVisibility="Auto" 
          x:Name="PART_ContentHost" 
          IsTabStop="true"> 
       <ScrollViewer.Background> 
       <LinearGradientBrush EndPoint="0.5,1" 
            StartPoint="0.5,0"> 
        <GradientStop Color="{DynamicResource ControlLightColor}" 
           Offset="0" /> 
        <GradientStop Color="{DynamicResource ControlMediumColor}" 
           Offset="1" /> 
       </LinearGradientBrush> 
       </ScrollViewer.Background> 
      </ScrollViewer> 
      <ContentControl Grid.Row="2" 
          x:Name="PART_FindToolBarHost"/> 
      </Grid> 
     </Border> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

これはリンクされた例と非常によく似ていますが、印刷とコピーのコマンドボタンは削除しました。ユーザーがこれらのボタンを使用できるようにする必要はありません。

私も Zoomコマンドをコメントアウトしなければならなかった

、IDEは、その問題への答えのために、これが有効なコマンドではありませんでしたボーナス票を訴えました。

これはすべてテンプレートを使用した後でもツールバーのボタンにイメージが表示されなくなりました。テキストはContentで指定したものになります。だから私の質問は、 "テンプレートの親にネストされたコントロールのコンテンツを使用するようにバインドできますか?"

答えて

4

Blendを使用してDocumentViewerのテンプレートを抽出して編集したときの結果を以下に示します。あなたが言及している2つのボタンをコメントアウトしました。あなたはSystem.Windows.Documentsの名前空間のインポートが欠けていたので

限りズームコマンドとして、それは無効なコマンドを訴えている場合があります。

XAML:

<Page 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:System_Windows_Documents="clr-namespace:System.Windows.Documents;assembly=PresentationUI" 
x:Class="WpfApplication6.Page2" 
x:Name="Page" 
WindowTitle="Page" 
FlowDirection="LeftToRight" 
Width="640" Height="480" 
WindowWidth="640" WindowHeight="480"> 

<Page.Resources> 
    <Style x:Key="DocumentViewerStyle1" BasedOn="{x:Null}" TargetType="{x:Type DocumentViewer}"> 
     <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/> 
     <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> 
     <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 
     <Setter Property="ContextMenu" Value="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerContextMenu, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type DocumentViewer}"> 
        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Focusable="False"> 
         <Grid Background="{TemplateBinding Background}" KeyboardNavigation.TabNavigation="Local"> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="*"/> 
          </Grid.ColumnDefinitions> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="Auto"/> 
           <RowDefinition Height="*"/> 
           <RowDefinition Height="Auto"/> 
          </Grid.RowDefinitions> 
          <ContentControl Grid.Column="0" Focusable="{TemplateBinding Focusable}" Grid.Row="0" Style="{DynamicResource ContentControlStyle1}" TabIndex="0"/> 
          <ScrollViewer x:Name="PART_ContentHost" CanContentScroll="true" Grid.Column="0" Focusable="{TemplateBinding Focusable}" HorizontalScrollBarVisibility="Auto" IsTabStop="true" Grid.Row="1" TabIndex="1"/> 
          <DockPanel Grid.Row="1"> 
           <FrameworkElement DockPanel.Dock="Right" Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"/> 
           <Rectangle Height="10" Visibility="Visible" VerticalAlignment="top"> 
            <Rectangle.Fill> 
             <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
              <LinearGradientBrush.GradientStops> 
               <GradientStopCollection> 
                <GradientStop Color="#66000000" Offset="0"/> 
                <GradientStop Color="Transparent" Offset="1"/> 
               </GradientStopCollection> 
              </LinearGradientBrush.GradientStops> 
             </LinearGradientBrush> 
            </Rectangle.Fill> 
           </Rectangle> 
          </DockPanel> 
          <ContentControl x:Name="PART_FindToolBarHost" Grid.Column="0" Focusable="{TemplateBinding Focusable}" Grid.Row="2" TabIndex="2"/> 
         </Grid> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
    <Style x:Key="ContentControlStyle1" TargetType="{x:Type ContentControl}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ContentControl}"> 
        <ToolBar Focusable="{TemplateBinding Focusable}" ToolBarTray.IsLocked="True" Language="en-us" KeyboardNavigation.TabNavigation="Continue" Uid="ToolBar_2"> 
         <!-- <Button x:Name="PrintButton" Background="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerPrintButton, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" CommandTarget="{Binding TemplatedParent, RelativeSource={RelativeSource TemplatedParent}}" Command="ApplicationCommands.Print" IsTabStop="True" Margin="2" Padding="2" Style="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerButtonStyle, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" ToolTipService.ShowOnDisabled="True" TabIndex="0" ToolTip="Print (Ctrl+P)" Uid="Button_14" VerticalAlignment="Center" Width="24"/> --> 
         <!-- <Button x:Name="CopyButton" Background="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerCopyButton, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" CommandTarget="{Binding TemplatedParent, RelativeSource={RelativeSource TemplatedParent}}" Command="ApplicationCommands.Copy" IsTabStop="True" Margin="2" Padding="2" Style="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerButtonStyle, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" ToolTipService.ShowOnDisabled="True" TabIndex="1" ToolTip="Copy (Ctrl+C)" Uid="Button_15" VerticalAlignment="Center" Width="24"/> --> 
         <!-- <Separator Uid="Separator_110"/> --> 
         <Button x:Name="ZoomInButton" Background="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerZoomInButton, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" CommandTarget="{Binding TemplatedParent, RelativeSource={RelativeSource TemplatedParent}}" Command="NavigationCommands.IncreaseZoom" IsTabStop="True" Margin="2" Padding="2" Style="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerButtonStyle, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" ToolTipService.ShowOnDisabled="True" TabIndex="3" ToolTip="Increase the size of the content (Ctrl +)" Uid="Button_16" VerticalAlignment="Center" Width="24"/> 
         <Button x:Name="ZoomOutButton" Background="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerZoomOutButton, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" CommandTarget="{Binding TemplatedParent, RelativeSource={RelativeSource TemplatedParent}}" Command="NavigationCommands.DecreaseZoom" IsTabStop="True" Margin="2" Padding="2" Style="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerButtonStyle, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" ToolTipService.ShowOnDisabled="True" TabIndex="4" ToolTip="Decrease the size of the content (Ctrl -)" Uid="Button_17" VerticalAlignment="Center" Width="24"/> 
         <Separator Uid="Separator_111"/> 
         <Button x:Name="ActualSizeButton" Background="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerActualSizeButton, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" CommandTarget="{Binding TemplatedParent, RelativeSource={RelativeSource TemplatedParent}}" CommandParameter="100.0" Command="NavigationCommands.Zoom" IsTabStop="True" Margin="2" Padding="2" Style="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerButtonStyle, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" ToolTipService.ShowOnDisabled="True" TabIndex="5" ToolTip="100% (Ctrl+1)" Uid="Button_18" VerticalAlignment="Center" Width="24"/> 
         <Button x:Name="PageWidthButton" Background="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerPageWidthButton, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" CommandTarget="{Binding TemplatedParent, RelativeSource={RelativeSource TemplatedParent}}" Command="DocumentViewer.FitToWidthCommand" IsTabStop="True" Margin="2" Padding="2" Style="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerButtonStyle, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" ToolTipService.ShowOnDisabled="True" TabIndex="6" ToolTip="Page Width (Ctrl+2)" Uid="Button_19" VerticalAlignment="Center" Width="24"/> 
         <Button x:Name="WholePageButton" Background="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerWholePageButton, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" CommandTarget="{Binding TemplatedParent, RelativeSource={RelativeSource TemplatedParent}}" CommandParameter="1" Command="DocumentViewer.FitToMaxPagesAcrossCommand" IsTabStop="True" Margin="2" Padding="2" Style="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerButtonStyle, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" ToolTipService.ShowOnDisabled="True" TabIndex="7" ToolTip="Whole Page (Ctrl+3)" Uid="Button_20" VerticalAlignment="Center" Width="24"/> 
         <Button x:Name="TwoPagesButton" Background="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerTwoPagesButton, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" CommandTarget="{Binding TemplatedParent, RelativeSource={RelativeSource TemplatedParent}}" CommandParameter="2" Command="DocumentViewer.FitToMaxPagesAcrossCommand" IsTabStop="True" Margin="2" Padding="2" Style="{DynamicResource {ComponentResourceKey ResourceId=PUIDocumentViewerButtonStyle, TypeInTargetAssembly={x:Type System_Windows_Documents:PresentationUIStyleResources}}}" ToolTipService.ShowOnDisabled="True" TabIndex="8" ToolTip="Two Pages (Ctrl+4)" Uid="Button_21" VerticalAlignment="Center" Width="24"/> 
        </ToolBar> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Page.Resources> 

<Grid x:Name="LayoutRoot"> 
    <DocumentViewer Style="{DynamicResource DocumentViewerStyle1}"/> 
</Grid> 

+0

優秀な、私はこの作品を確認することができます。私は、PresentationUIへの参照を、フレームワークディレクトリのWPFサブフォルダ内のファイルシステムで参照する必要がありました。私がこれから学んだ主なことは、WPFで洗練された何かをしたいのであればBlendを使うことだと思います。新しいコントロールをシンプルに見せたいのであれば、コントロールテンプレートは「シンプル」なのです。 – Jodrell

+0

ズームコマンドは設計時にのみ問題があるようです! – Jodrell

+0

うれしかった! Blendではテンプレートを複雑に変更する方がずっと簡単だと私は同意します。私は主にVSでXAMLビューを使用しますが、このような種類のものをブレンドしています。限り、ズームコマンドまで、私はそれが実行時に参照なしで動作するかどうかはわかりません。 – NathanAW

関連する問題