在WPF中,如何将TextBox文本放入ComboBox的项目中? 我看到了一个相反的问题,意味着将ComboBox中的选定项绑定到TextBox。 这是我的场景,我有一个tabcontrol,每个tabPage包含TextBoxes。我已经完成了用于验证TextBoxes文本的数据绑定。现在,我需要在tabControl之外创建ComboBox,以便从TextBox中显示经过验证的文本。
<Grid>
<TabControl>
<TabItem>
<TextBox />
<TextBox>
...
</TextBox>
</TabItem>
</TabControl>
<ComboBox />
<ComboBox />
</Grid>
我是WPF的新手。我可能需要很多参考资料来进一步阅读有关解决方案的内容。感谢。
答案 0 :(得分: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>