回答
添加ItemTemplate
这样的:
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {1}">
<Binding Path="LastName" />
<Binding Path="FirstName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
旁注:在实际的代码中,我更频繁地使用Dean's method,但是这是做事的方式MultiBinding。
您可以创建一个绑定,MultiBinding如下:
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter=" ... " ... >
<Binding Path="FirstName" />
<Binding Path="LastName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
谢谢,但为什么我会使用转换器?我不能给+1,因为它缺乏主要的东西..物品模板,否则它会工作,我猜。只是不知道把你的代码放在哪里。 – Rushino
没关系投票。我想你错过了模板和绑定的基本概念。组合控件是基元之间最复杂的控件之一。我假设你已经知道如何应用DataTemplate以及如何创建一个简单的绑定。我的片段是关于如何应用多重绑定的一个通用示例。我认为问题在于多重绑定是如何工作的,而不是解决您的特定问题。我建议你先从简单的东西开始,否则你会在短时间内感到困惑。 –
好吧,你说我错过了很多WPF概念。我对此很新颖。其实我正在努力学习它硬核的方式。我可能会收到一本关于这方面的书。但感谢您的评论。 – Rushino
你指的是一些简单的像这样
<ComboBox>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<Run Text="{Binding FirstName}" />
<Run Text=" " />
<Run Text="{Binding LastName}" />
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
这里给出的例子是几乎所有你所需要的。
http://msdn.microsoft.com/en-us/library/system.windows.data.multibinding.aspx
只是交换TextBlock的一个组合框,并绑定到它的SelectedItem而不是Text属性。
这是关于转换器的讨论..没有什么与我需要的真正相关。它甚至不显示如何应用于组合框。 – Rushino
我投票支持@ H.B.的解决方案,因为它最能解答您的问题。请记住,虽然你的要求不会需要改变太多,你会超过StringFormat。如果两个变量都可用,则转换器可以处理显示由空格分隔的名字和姓氏,并且如果名字例如为空,则只有名字(没有空格)。 –
这样创建MultiBinding:
<Window x:Class="WpfTestApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:WpfTestApp="clr-namespace:WpfTestApp" Title="MainWindow" Height="350" Width="525" >
<Window.Resources>
<WpfTestApp:ConcatenateStringsConverter x:Key="_concatenateStringsConverter" />
</Window.Resources>
<Grid x:Name="LayoutRoot" Style="{StaticResource RectangleHighlighter}">
<ComboBox Width="200" Height="40">
<ComboBox.Items>
<ComboBoxItem >
<ComboBoxItem.Content>
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource _concatenateStringsConverter}">
<Binding Mode="OneWay" Path="FirstName" />
<Binding Mode="OneWay" Path="LastName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</ComboBoxItem.Content>
</ComboBoxItem>
</ComboBox.Items>
</ComboBox>
</Grid>
</Window>
我已经使用MainWindowViewModel作为窗口的DataContext的:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new MainWindowViewModel();
}
}
public class MainWindowViewModel :INotifyPropertyChanged
{
public MainWindowViewModel()
{
FirstName = "Souvik";
LastName = "Basu";
}
private string _firstName;
public string FirstName
{
get { return _firstName; }
set
{
if (_firstName != value)
{
_firstName = value;
OnPropertyChange("FirstName");
}
}
}
private string _lastName;
public string LastName
{
get { return _lastName; }
set
{
if (_lastName != value)
{
_lastName = value;
OnPropertyChange("LastName");
}
}
}
protected void OnPropertyChange(string propertyName)
{
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
转换器串接多个绑定值..
class ConcatenateStringsConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return values[0].ToString() + " " + values[1].ToString();
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
有点太复杂,我需要但谢谢! – Rushino
- 1. DataGrid组合框与所选项目或新项目的绑定问题
- 2. 多重绑定与组合框
- 3. C#组合框绑定错误显示所选项目
- 4. WPF组合框数据绑定所选项目
- 5. 如何在组合框项目标记之间进行绑定
- 6. 基于另一个组合框的选定项目绑定组合框 - MVVM WPF
- 7. 将组合框中选定项目的组合框属性绑定到字段
- 8. 绑定按钮启用属性组合框选定的项目
- 9. WPF组合框如何绑定代码中的选定项目?
- 10. JavaFX组合框项目属性绑定
- 11. WPF。帮助绑定组合框项目
- 12. Silverlight组合框项目模板绑定
- 13. 检测“组合框”所选项目
- 14. 组合框 - 打印出所选项目
- 15. 组合框不显示所选项目
- 16. 组合框/列表框选定项目
- 17. 将组合框选定项目内容绑定到元素
- 18. 选择所有组合框内的复选框Wpf中的组合框项目
- 19. 组合框选定的项目WPF c#
- 20. 从组合框中绑定选定的项目并将其绑定到图像
- 21. 绑定的组合框项目指不同的字段项目
- 22. 组合框选择多个项目
- 23. 从其他组合框的选定项目填充组合框
- 24. WPF:与多选项绑定列表框
- 25. WPF数据绑定列表视图与组合框选定项目问题
- 26. 组合框项目重叠
- 27. WPF绑定到组合框和选择一个项目
- 28. c#Windows 8:组合框选定项目
- 29. WPF组合框选定项目
- 30. flex 3组合框选定项目
我做不应该认为应该在应该管理的SelectedItem上设置这样的绑定什么是选择,而不是什么显示.. –
以及有点清楚,不在选定的项目,但显示给用户..对象列表。 – Rushino