2013-06-04 275 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