2009-08-07 4 views
1

Ma première application WPF, mais ça ne fonctionne pas. Aidez-moi, s'il vous plaît!Aide: Pourquoi ma première application WPF ne fonctionne-t-elle pas?

xaml: 
<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="308" Width="527"> 
    <Grid Name="canvas"> 
     <Canvas></Canvas> 
    </Grid> 
</Window> 

code derrière:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for Window1.xaml 
    /// </summary> 
    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 
      Line line = new Line(); 
      line.X1 = 0; 
      line.Y1 = 100; 
      line.X2 = 0; 
      line.Y2 = 100; 
      line.Stroke = Brushes.Red; 
      line.StrokeThickness = 1; // Note1 
      canvas.Children.Insert(0, line); 
     } 
    } 
} 
+3

Soyez plus précis S'il vous plaît, quel est le problème que vous rencontrez? –

Répondre

5

Ce que je vois est votre première coordonnées X, Y et le second sont les mêmes. La ligne tracée est donc au même point.

line.X1 = 0; 
line.Y1 = 100; 
line.X2 = 0; 
line.Y2 = 100; 

// Change too this and that will will draw straight over 100 pixels. 
line.X1 = 0; 
line.Y1 = 100; 
line.X2 = 100; 
line.Y2 = 100; 
3

Cela fonctionne.

Mais vous créez un point unique, pas une ligne, et vous l'ajoutez à la grille, pas au canevas. En fait, je ne pense pas que vous verrez même un point avec les points de départ et d'arrivée étant les mêmes.

Changez X2 à 300 et vous verrez une ligne rouge.

SergioL

5

Vos valeurs X1/Y1 sont les mêmes que les valeurs X2/Y2. Si vous changez line.X2 = 0; à line.X2 = 50 ;, vous verrez votre ligne.

Si votre ligne ne va pas être dynamique cependant, il est préférable pratique généralement à faire des choses plus visuelles en XAML directement comme ceci:

<Grid Name="canvas"> 
    <Line X1="0" Y1="100" X2="50" Y2="100" StrokeThickness="1" Stroke="Red" /> 
</Grid> 

Hope this helps, Andy

Questions connexes