2009-06-22 11 views
2

Comment puis-je désactiver la fonctionnalité copier et coller dans un bloc de texte Silverlight?Copier et coller dans Silverlight

+0

Copier et coller ne fonctionnent pas dans un Silverlight TextBlock. Voulez-vous dire TextBox? –

Répondre

4

Je suppose que vous voulez dire TextBox plutôt que TextBlock car ce dernier ne permet pas de couper et coller.

Je pense que la manière la plus simple de faire cela sera de dériver de TextBox et de surcharger la manipulation des touches pour éviter les raccourcis d'opération du presse-papier. Vous auriez besoin d'étendre cette solution de base si vous vouliez que le support I18N permette différents raccourcis sur différents systèmes, mais pour les standards Ctrl + V, Ctrl + C (ou Apple + C et Apple + V sur Mac), cela devrait fonctionner. Vous pouvez aussi considérer Ctrl + Ins comme une alternative à Ctrl + V (je ne suis pas certain que Silverlight supporte cela, mais cela pourrait être le cas).

1

La réponse est ici la celui que vous allez vouloir entendre mais c'est la manière la plus correcte à mon humble avis. TextBlock ne prend pas en charge le copier/coller.

L'étiquette non plus. J'ai l'impression de me rappeler que c'est à cause de leur rendu à l'écran. Le meilleur moyen que je connaisse est d'utiliser un TextBox et le styler pour qu'il ressemble à un TextBlock ou un Label.

Voici un style simple et agréable à essayer et à modifier. Il devrait faire l'affaire correctement.

<Style x:Key="ReadonlyTextBox" TargetType="TextBox"> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="Background" Value="#FFFFFFFF"/> 
    <Setter Property="Foreground" Value="#FF000000"/> 
    <Setter Property="Padding" Value="2"/> 
    <Setter Property="IsReadOnly" Value="True"/> 
    <Setter Property="BorderBrush"> 
     <Setter.Value> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#FFA3AEB9" Offset="0"/> 
       <GradientStop Color="#FF8399A9" Offset="0.375"/> 
       <GradientStop Color="#FF718597" Offset="0.375"/> 
       <GradientStop Color="#FF617584" Offset="1"/> 
      </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="TextBox"> 
       <Grid x:Name="RootElement"> 
        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="CommonStates"> 
          <VisualState x:Name="Normal"/> 
          <VisualState x:Name="MouseOver"/> 
          <VisualState x:Name="Disabled"/> 
          <VisualState x:Name="ReadOnly"> 
           <Storyboard> 
            <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ReadOnlyVisualElement"/> 
            <ColorAnimation Duration="0" To="#00C9C9C9" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" Storyboard.TargetName="ReadOnlyVisualElement" d:IsOptimized="True"/> 
           </Storyboard> 
          </VisualState> 
         </VisualStateGroup> 
         <VisualStateGroup x:Name="FocusStates"> 
          <VisualState x:Name="Focused"/> 
          <VisualState x:Name="Unfocused"/> 
         </VisualStateGroup> 
         <VisualStateGroup x:Name="ValidationStates"> 
          <VisualState x:Name="Valid"/> 
          <VisualState x:Name="InvalidUnfocused"/> 
          <VisualState x:Name="InvalidFocused"/> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <Border x:Name="Border" CornerRadius="1" Opacity="1"> 
         <Grid> 
          <Border x:Name="ReadOnlyVisualElement" Background="#5EC9C9C9" Opacity="0"/> 
          <ScrollViewer x:Name="ContentElement" BorderThickness="0" IsTabStop="False" Padding="{TemplateBinding Padding}" Margin="1,1,-1,1"/> 
         </Grid> 
        </Border> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Maintenant, vous avez juste un tas de Trouver & Remplacer pour obtenir occupé avec :-)

Questions connexes