2014-04-07 35 views
0

現在我的構造函數是空的,並沒有做我想要的。 我有一個圖像列表,當用戶點擊其中一個圖像時,應打開一個新窗口,顯示所選圖像及其相應描述。 可以這樣做嗎?我應該在構造函數中寫什麼?此時,點擊觸發事件時,不會打開任何窗口。如何鏈接我的構造函數和用戶可以點擊的按鈕?

這是列表的代碼。

var files = Directory.GetFiles(@".\GalleryImages"); 

foreach (var file in files) 
{ 
    FileInfo fileInfo = new FileInfo(file); 

    BitmapImage bi = new BitmapImage(); 
    bi.BeginInit(); 
    bi.UriSource = new Uri(file, UriKind.Relative); 
    bi.DecodePixelWidth = 20; 
    bi.EndInit(); 

    var button = new KinectTileButton 
    { 
     Label = System.IO.Path.GetFileNameWithoutExtension(file), 
     Background = new ImageBrush(bi), 
     Tag = file 
    }; 
    var selectionDisplay = new SelectionDisplay(button.Label as string, button.Tag as string); 
    this.wrapPanel.Children.Add(button); 
} 

這是click事件的代碼。

private void KinectTileButtonClick(object sender, RoutedEventArgs e) 
{ 
    var button = (KinectTileButton)e.Source; 
    var image = button.CommandParameter as BitmapImage; 
    var selectionDisplay = new SelectionDisplay(button.Label,button.Background); 
    this.kinectRegionGrid.Children.Add(selectionDisplay); 
    e.Handled = true; 
} 

這是構造函數。

public SelectionDisplay(object label, Brush background) 
{ 
    // Do stuff 
} 
+1

你爲什麼不使用XAML ? – csharpwinphonexaml

+0

您正在創建代碼隱藏的所有內容 – csharpwinphonexaml

+0

是否需要更多詳細信息?只要我能做到這一點,任何解決方案都會很好。即使使用xaml,但我應該怎麼做? – user3493747

回答

0

既然你開始使用代碼隱藏,如果我告訴你如何完成你的工作,那麼你可能不太痛苦。

所以在這裏,它是:

public SelectionDisplay(object label, Brush background) 
{ 
    messageTextBlock.Text= label.ToString(); 
    Background = background; 
} 
+0

這是我得到的錯誤;如果我解決了這個問題,我想我會完成我的工作「名稱'文本'在當前上下文中不存在\t 」 – user3493747

+0

SelectionDisplay是什麼類型?窗戶還是什麼? – csharpwinphonexaml

+0

http://i61.tinypic.com/xn58hu.png http://i57.tinypic.com/29yiik3.png它是一個類型.xaml界面..我製作了一個打印屏幕以使其更清晰 – user3493747

1

嘗試添加一個處理程序,您的按鈕

FileInfo fileInfo = new FileInfo(file); 

BitmapImage bi = new BitmapImage(); 
bi.BeginInit(); 
bi.UriSource = new Uri(file, UriKind.Relative); 
bi.DecodePixelWidth = 20; 
bi.EndInit(); 

var button = new KinectTileButton 
{ 
    Label = System.IO.Path.GetFileNameWithoutExtension(file), 
    Background = new ImageBrush(bi), 
    Tag = file 
}; 
**button.Click += KinectTileButtonClick;** 
var selectionDisplay = new SelectionDisplay(button.Label as string, button.Tag as string); 
this.wrapPanel.Children.Add(button); 
0

創建一個列表框,你可以加載所有你裏面的圖像。 然後在選擇改變的事件可以用右鍵這樣的事情,

//這是一個非常粗略的代碼,但應該做你想要的東西,如果上午理解currectly

private void lstbox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 

     Uri uri = new Uri(System.IO.Path.GetFullPath(lstbox.SelectedItem.ToString()), UriKind.RelativeOrAbsolute); 
     BitmapImage bmp = new BitmapImage(uri); 
     DisplayImg.Source = bmp; 
     int index = lstbox.SelectedIndex+1; 

     w1 window = new w1(); 
     window.TXT.Text = "Selected Item Is :" + index; 
     window.Show(); 
    } 
// inside w1.xaml you create something like 

<Grid> 
    <Image x:Name="Display" HorizontalAlignment="Left" Height="185" Margin="1,0,-0.4,0" VerticalAlignment="Top" Width="293"/> 
    <TextBlock x:Name="TXT" HorizontalAlignment="Left" Margin="0,185,-0.4,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="85" Width="294"/> 

</Grid> 
+0

http://i58.tinypic.com/izxnx5.png http://i58.tinypic.com/2ufequv.png我輸入的代碼是否正確?看看 – user3493747

+0

在你的屏幕截圖中顯示錯誤,因爲你沒有列表框或列表框的名稱是不同的,而W1是我創建的窗口,以顯示你的情況下的圖像這就是選擇顯示 –

+0

我strogly建議你開始從http學習://www.wpftutorial.net/得到一個更好的主意 –