2009-10-28 85 views
2

我在学习Expression Blend和SilverLight。我试图实现的是从combobox输出选定的项目到一个textBlock。任何一个人都可以指向正确的方向,或者向我展示一些关于如何完成的C#。这是我当前的代码:如何在Silverlight中显示组合框中的值?

private void GetSubmitBtn(object sender, System.Windows.RoutedEventArgs e) 
{ 
    this.Message.Text = 
     "Hello there " + this.Firstname.Text + " " + this.Surname.Text 
     + ". You come from " + this.Origin.SelectedItem.ToString(); 
} 

回答

0

我认为你需要的SelectedValue代替SelectedItem

或者

((OriginClass)Origin.SelectedItem).value; 
+0

感谢的名字,但说没”工作。当我运行我的代码时,它会输出“Expression.Blend.SampleData.OriginData.Item” – ivordesign 2009-10-28 14:01:31

0

绑定你的文本块到combobox.Text的文本。

+0

,这不是真的,因为他希望在他的文本块中包含“Hello there blablabla”,而不仅仅是组合框文本 – Natrium 2009-10-28 13:43:12

1

你可以做这样的事情:

<ComboBox x:Name="Names"> 
     <ComboBoxItem Content="John Doe" /> 
     <ComboBoxItem Content="Jane Doe" /> 
     <ComboBoxItem Content="Jack Black" /> 
     <ComboBoxItem Content="Jake White" /> 
     <ComboBoxItem Content="Kelly Blue" /> 
    </ComboBox> 
    <TextBlock Text="{Binding SelectedItem.Content, ElementName=Names}" /> 

,只使用一个转换器转换成你的“你好......”字符串。

你也可以用样本数据来做到这一点。使用名为FullName的列创建一些示例数据。

在XAML中引用您的样本数据(与此类似)

<UserControl.Resources> 
    <SampleData:SampleDataSource x:Key="SampleDataSource" d:IsDataSource="True"/> 
</UserControl.Resources> 

然后你ComboBoxTextBlock将改变这一点。

<ComboBox x:Name="Names" DataContext="{Binding Source={StaticResource SampleDataSource}}" DisplayMemberPath="FullName" ItemsSource="{Binding Collection}"/> 
<TextBlock Text="{Binding SelectedItem.FullName, ElementName=Names}" /> 
+0

谢谢,但组合框盒子有样品数据绑定到它,所以这不起作用 – ivordesign 2009-10-28 15:20:13

+0

我只是编辑上面的示例使用示例数据。 – 2009-10-28 17:16:42

0

你可以在Silverlight中显示组合框的设定值到文本框,如下所示:

TextBox1.Text = (cmbApplicationStatus.SelectedItem as ComboBoxItem).Content.ToString(); 

这里,cmbApplicationStatus是您的组合框