如何链接我的构造函数和用户可以单击的按钮
本文关键字:用户 单击 按钮 构造函数 何链接 链接 我的 | 更新日期: 2023-09-27 17:57:15
现在我的构造函数是空的,没有做我想做的事。我有一个图像列表,当用户单击其中一个图像时,应该会打开一个新窗口,显示所选图像及其各自的描述。能做到吗?我应该在我的构造函数中写什么?现在,当通过单击触发事件时,不会打开任何窗口。
这是列表的代码。
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);
}
这是点击事件的代码。
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
}
尝试向按钮添加处理程序
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);
创建一个列表框,您可以在其中加载所有图像。然后在选择更改事件中,您可以纠正这样的事情,
这是一个非常粗略的代码,但应该做你想做的事,如果我理解的话
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>
既然你开始使用代码隐藏,如果我告诉你如何完成你的工作,也许你理解和使用起来就不那么痛苦了。
所以这里是:
public SelectionDisplay(object label, Brush background)
{
messageTextBlock.Text= label.ToString();
Background = background;
}