如何链接我的构造函数和用户可以单击的按钮

本文关键字:用户 单击 按钮 构造函数 何链接 链接 我的 | 更新日期: 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;
}