2012-02-28 57 views
0

在WPF中,如何将TextBox的文本插入到组合框的项目中? 我看到了一个相反的问题,意思是将ComboBox中的选定项绑定到TextBox。 这里是我的场景,我有一个tabcontrol,每个tabPage包含TextBoxes。我已经完成了用于验证TextBoxes文本的数据绑定。现在,我需要在TabControl之外制作ComboBox,以显示来自TextBoxes的验证文本。从几个文本框中获取组合框项目

<Grid> 
<TabControl> 
<TabItem> 
<TextBox /> 
<TextBox> 
    ... 
</TextBox> 
</TabItem> 
</TabControl> 
<ComboBox /> 
<ComboBox /> 
</Grid> 

我是WPF的新手新手。我可能需要大量参考资料才能进一步阅读有关解决方案。谢谢。

回答

1

这里有一个简单的解决方案,这将显示四个文本框的组合框的文本:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 

    <TextBox Name="tb0" /> 
    <TextBox Name="tb1" Grid.Row="1" /> 
    <TextBox Name="tb2" Grid.Row="2" /> 
    <TextBox Name="tb3" Grid.Row="3" /> 
    <ComboBox Grid.Row="4"> 
     <ComboBoxItem IsSelected="True"> 
      <TextBlock Text="{Binding ElementName=tb0, Path=Text}" /> 
     </ComboBoxItem> 
     <ComboBoxItem> 
      <TextBlock Text="{Binding ElementName=tb1, Path=Text}" /> 
     </ComboBoxItem> 
     <ComboBoxItem> 
      <TextBlock Text="{Binding ElementName=tb2, Path=Text}" /> 
     </ComboBoxItem> 
     <ComboBoxItem> 
      <TextBlock Text="{Binding ElementName=tb3, Path=Text}" /> 
     </ComboBoxItem> 
    </ComboBox> 
</Grid> 

编辑: 隐藏在下拉列表中的项目时,他们空,你可以使用一个转换器并检查文本是否为空。

转换器:

public abstract class BaseConverter : MarkupExtension 
{ 
    public override object ProvideValue(IServiceProvider serviceProvider) 
    { 
     return this; 
    } 
} 

public class StringToVisibilityConverter : BaseConverter, IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return value.ToString() != string.Empty ? Visibility.Visible : Visibility.Collapsed; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return null; 
    } 
} 

添加转换器作为一种资源:

<Window.Resources> 
    <TestProject:StringToVisibilityConverter x:Key="stringToVisibilityConverter" /> 
</Window.Resources> 

使用转换器:

<ComboBoxItem> 
    <TextBlock Text="{Binding ElementName=tb3, Path=Text}" Visibility="{Binding ElementName=tb3, Path=Text, Converter={StaticResource stringToVisibilityConverter}}" /> 
</ComboBoxItem> 
+0

感谢answer.I注意到ComboBox显示为空项在其下拉列表中。接下来是让它不显示空白的项目。欢迎提出建议。 – kirchhoff 2012-03-01 05:15:01

+0

我编辑答案来隐藏空的组合框项。 – Eirik 2012-03-01 07:48:10

相关问题