C# 我编译时出错

C# 我编译时出错,c#,wpf,C#,Wpf,在我做了下面帖子中建议的更改之后,我遇到了一个新错误。您可以找到有关错误的详细信息,请参见图1。你知道我怎样才能解决这个问题吗 编辑: 对不起,我是新来的,所以我真的不知道事情进展如何。在上一篇文章中,有人建议我写一篇新的文章,链接到这个问题。我现在将提供足够的细节,以便您能够理解正在发生的事情 我有3个错误,我想解决 这些错误的代码发布在下面 参数1:无法从“对象”转换为“字符串” 参数2:无法从“System.Windows.Media.Brush”转换为“string” “Microsof

在我做了下面帖子中建议的更改之后,我遇到了一个新错误。您可以找到有关错误的详细信息,请参见图1。你知道我怎样才能解决这个问题吗

编辑: 对不起,我是新来的,所以我真的不知道事情进展如何。在上一篇文章中,有人建议我写一篇新的文章,链接到这个问题。我现在将提供足够的细节,以便您能够理解正在发生的事情

我有3个错误,我想解决

这些错误的代码发布在下面

参数1:无法从“对象”转换为“字符串”

参数2:无法从“System.Windows.Media.Brush”转换为“string”

“Microsoft.Samples.Kinect.ControlsBasics.SelectionDisplay.SelectionDisplaystring,string”具有一些无效参数

public SelectionDisplay(string itemId, string Tag)
    {
        this.InitializeComponent();

        this.messageTextBlock.Text = string.Format(CultureInfo.CurrentCulture,Properties.Resources.SelectedMessage,itemId);

    }


 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.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); // aici poti apoi sa mai trimiti si imaginea ca parametru pentru constructor
        this.kinectRegionGrid.Children.Add(selectionDisplay);
        e.Handled = true;

    }

感谢您的理解,我希望这篇文章能够重新打开。

现在,您已经致电构造器进行选择显示两种不同的方式:

var selectionDisplay = new SelectionDisplay(button.Label as string, button.Tag as string);
var selectionDisplay = new SelectionDisplay(button.Label,button.Background); // aici poti apoi sa mai trimiti si imaginea ca parametru pentru constructor
第一个字符串包含两个字符串,第二个字符串包含一个对象和一个笔刷,正如您遇到的错误所指示的那样。这意味着您需要两个构造函数:

public class SelectionDisplay
{
    public SelectionDisplay(string itemId, string Tag)
    {
        this.InitializeComponent();

        this.messageTextBlock.Text = string.Format(CultureInfo.CurrentCulture,Properties.Resources.SelectedMessage,itemId);

    }

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

现在,您可能只考虑有一个构造函数,但需要确保始终用相同的参数类型调用它。


如果我能澄清任何事情,请告诉我

您似乎只定义了一个构造函数,但使用两组不同的参数调用。要么定义这两个构造函数,要么一致地调用它。您正在传递一个笔刷,但接受一个按钮。接受画笔,如我的示例所示。我已经解决了错误,但当我点击按钮时,它没有按我所希望的那样工作,即什么也没有发生。它将打开一个新的蓝色窗口,并在该窗口中显示选定的图像。例如,如果我从图像列表中选择考拉,那么在下一个窗口中,应该显示考拉图像,并在其旁边显示一个简短的描述。请查看imagesWell,在构造函数中除了我的示例代码之外,您还需要一些东西:。提供的代码旨在解决编译问题,而不是为您编写程序!您已经有了在代码中设置图像源的代码,因此在每个构造函数中都应该这样做,并适当地更新文本。你有什么特别的东西不管用吗?任何新问题都可能是一个新问题,但您需要将范围缩小一点。