2013-06-04 222 views
1

我在vs2010中创建wpf应用程序。我有一个简单的问题。C#初始化类

我有个类来显示图像:从另一个类

<ScrollViewer Name="MyScrollViewer" CanContentScroll="True" HorizontalScrollBarVisibility="Visible" Grid.Row="1" Grid.Column="1" > 
    <Image Name="newImage" ImageFailed="newImage_ImageFailed" HorizontalAlignment="Right" Margin="10" /> 
</ScrollViewer> 

要初始化它,我请displayImage();

private void displayImage() 
{ 
    newImage.Width = 900; 
    newImage.Height = 700; 

    BitmapImage testim = new BitmapImage(); 
    testim.BeginInit(); 
    testim.UriSource = new Uri("E:\\WpfApplication1\\Images\\test.jpg"); 
    testim.EndInit(); 

    newImage.Source = testim; 
} 

XAML。

我希望这个图像在我运行该应用程序后立即可见。我想如何初始化它而无需从另一个类中调用它?

非常感谢。

关于

+4

它似乎没有在任何地方使用“t”。为什么在那里? – emd

+0

首先,bool与初始化无关,其次你甚至没有使用它。 –

+0

在另一个类中,我调用displayImage(true),我可以看到图像。我可以摆脱布尔。我想知道如何在不调用它的情况下初始化它。 – Naresh

回答

3

我不确定你为什么试图在代码中设置它。在XAML中设置它比较容易:

<ScrollViewer Name="MyScrollViewer" CanContentScroll="True" HorizontalScrollBarVisibility="Visible" Grid.Row="1" Grid.Column="1" > 
    <Image Name="newImage" ImageFailed="newImage_ImageFailed" 
          HorizontalAlignment="Right" Width="900" 
          Height="700" Margin="10" Source="/Images/test.jpg" /> 
</ScrollViewer> 

上面应该已经有所窍门了。请注意,我还为图像设置了WidthHeight值。不需要代码来实现这一点。

如果你真的想在开始的代码中设置图像,你需要在WPF页面/窗口的构造函数中。类的构造函数在创建类时被调用。在这种情况下,当需要创建Window或Page时,应用程序所做的第一件事就是调用构造函数。在这个构造函数中,应用程序也学会了必须构建一些图形化的东西。这就是施工人员的工作方式。

InitializeComponent();之后,你可以放入任何你喜欢的东西。例如:

public partial class MainWindow : Page 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     displayImage(); 
    } 

    private void displayImage() 
    { 
     newImage.Width = 900; 
     newImage.Height = 700; 

     BitmapImage testim = new BitmapImage(); 
     testim.BeginInit(); 
     testim.UriSource = new Uri("E:\\WpfApplication1\\Images\\test.jpg"); 
     testim.EndInit(); 

     newImage.Source = testim; 
    } 
} 

如果路径是动态的,绑定您的映像是最佳实践。在XAML中,有这样的事:

<Image> 
    <Image.Source> 
     <BitmapImage UriSource="{Binding Path=ImagePath}" /> 
    </Image.Source> 
</Image> 

所以UriSource被绑定到ImagePath。在代码中,有以下几点:

public BitmapImage ImagePath 
{ get { return testim; } } 

所以它被绑定到那。如果更改该值,则绑定会确保GUI中的值随其更改。

+0

在InitializeComponent()后添加;是我一直在寻找的。谢谢。正如我所说,这是关于如何使用事物的测试部分。图像的来源需要动态设置。我认为很容易在代码中设置而不是XAML。 – Naresh

+0

@Naresh我在回答中增加了更多内容。如果你的源代码是动态的,你将不得不自学如何绑定数据源。这会让事情变得更容易,并且是使用WPF而不是Windows Forms的实际优势和优势之一。 – Joetjah

+0

完美。我只需要知道要寻找什么。我是c#的新手,有太多的信息,我感到失落。我会阅读。万分感谢。 – Naresh