Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何声明构造函数?_C#_Wpf - Fatal编程技术网

C# 如何声明构造函数?

C# 如何声明构造函数?,c#,wpf,C#,Wpf,我编译程序时出现以下错误 “Microsoft.Samples.Kinect.ControlsBasics.SelectionDisplay”不适用 包含一个接受2参数的构造函数“ 我可能需要为我创建的新东西声明另一个构造函数,但我不知道如何做。我已经在下面发布了相应的代码,你能帮我吗 public SelectionDisplay(string itemId) { this.InitializeComponent(); this.messageTextBlock.Text =

我编译程序时出现以下错误

“Microsoft.Samples.Kinect.ControlsBasics.SelectionDisplay”不适用 包含一个接受2参数的构造函数“

我可能需要为我创建的新东西声明另一个构造函数,但我不知道如何做。我已经在下面发布了相应的代码,你能帮我吗

public SelectionDisplay(string itemId)
{
    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;
}

提前谢谢

编辑:现在我有一个不同的问题。。在我做了这些更改之后,我收到了三个新错误。看一看新的图像和所做的更改


您应该创建一个超负荷的
SelectionDisplay
构造函数,或者更改您已有的构造函数。像这样:

public SelectionDisplay(string itemId, string tag)
{
    //Do something here
}
由于您正在创建带有两个参数的
SelectionDisplay
的新实例,但其构造函数只接受一个参数。(
string itemId
):

您必须检查按钮、标签、标签和背景的类型,并使用这些值创建一个新的构造函数


您可以阅读有关
构造函数的更多信息

您应该创建
SelectionDisplay
构造函数的重载,或者更改您已有的构造函数。像这样:

public SelectionDisplay(string itemId, string tag)
{
    //Do something here
}
由于您正在创建带有两个参数的
SelectionDisplay
的新实例,但其构造函数只接受一个参数。(
string itemId
):

您必须检查按钮、标签、标签和背景的类型,并使用这些值创建一个新的构造函数


您可以阅读有关
构造函数的更多信息

您已经创建了一个包含一个参数的构造函数:

public SelectionDisplay(string itemId)
{
    //...
}
但你要传递两个参数:

new SelectionDisplay(button.Label as string, button.Tag as string);
您可以向已有的构造函数添加参数,或创建新的参数:

public SelectionDisplay(string itemId, string someOtherValue)
{
    //...
}

您已经创建了一个接受一个参数的构造函数:

public SelectionDisplay(string itemId)
{
    //...
}
但你要传递两个参数:

new SelectionDisplay(button.Label as string, button.Tag as string);
您可以向已有的构造函数添加参数,或创建新的参数:

public SelectionDisplay(string itemId, string someOtherValue)
{
    //...
}

您有两行错误:

var selectionDisplay = new SelectionDisplay(button.Label as string, button.Tag as string);

您将构造函数定义为

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

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

    }
如果您需要定义一些默认值,那么您需要这样做

public SelectionDisplay(string itemId, string nextParam="default value")
    {
        this.InitializeComponent();

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

    }

在这种情况下,您可以传递下一个参数,也可以忽略它

您有两行错误:

var selectionDisplay = new SelectionDisplay(button.Label as string, button.Tag as string);

您将构造函数定义为

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

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

    }
如果您需要定义一些默认值,那么您需要这样做

public SelectionDisplay(string itemId, string nextParam="default value")
    {
        this.InitializeComponent();

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

    }

在这种情况下,您可以传递下一个参数,也可以忽略它

参数的数量是错误的,请检查SelectionDisplay Documentation您有
SelectionDisplay(string,string)
SelectionDisplay(Label,Brush)
是否同时使用这两个参数?参数的数量是错误的,选中SelectionDisplay Documents您有
SelectionDisplay(string,string)
SelectionDisplay(Label,Brush)
您打算同时使用这两种工具吗??