我在vs2010中创建了wpf应用程序。我有一个简单的问题。
我有一个显示图像的课程:
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:
<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();
。
我想在运行应用程序后立即看到此图像。我想如何初始化它而不从另一个类调用它?
非常感谢。
问候
答案 0 :(得分: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>
以上应该已经成功了。请注意,我还为图片设置了Width
和Height
值。无需代码即可实现此目标。
如果你真的想在开始时在代码中设置图像,你需要在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中的值随之更改。