2014-04-04 152 views
0

我收到以下错误,当我编译程序如何声明构造函数?

“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; 
} 

http://i61.tinypic.com/nno384.png

http://i57.tinypic.com/33vm2k7.png

提前感谢!

编辑:现在我有一个不同的问题..我做了这些更改后,我得到三个新的错误。看看有变化的新形象做出

http://i58.tinypic.com/qwwqvn.png

+1

参数的数目不对,请检查SelectionDisplay文档 –

+0

你'SelectionDisplay(字符串,字符串)'和'SelectionDisplay(标签,刷)'你打算使用他们两个? – Bolu

回答

2

您应该创建SelectionDisplay的构造器的过载或改变你已经有一个。就像这样:

public SelectionDisplay(string itemId, string tag) 
{ 
    //Do something here 
} 

由于你创建的SelectionDisplay一个新的实例有两个参数,但它的构造函数只接受一个参数。 (string itemId):

//foreach 
new SelectionDisplay(button.Label as string, button.Tag as string); // 

//KinectTileButtonClick method 
new SelectionDisplay(button.Label, button.Background); 

你要检查什么类型button.Labelbutton.Tagbutton.Background是,创造这些值一个新的构造。

你可以阅读更多关于Constructorshere

3

嗯,你已经创建了一个构造函数有一个参数:

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

但你传递两个参数:

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

您可以为您的构造函数添加一个参数,或者创建一个新的参数:

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

你有两行错误:

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

var selectionDisplay = new SelectionDisplay(button.Label, button.Background); 

和您定义的构造函数

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); 

    } 

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

相关问题