2012-02-28 9 views
0

WPFでは、どのようにしてTextBoxのテキストをComboBoxのアイテムに配置できますか? 私は、反対のことをする質問を見ました。これは、ComboBoxの選択されたItemをTextBoxにバインドすることを意味します。 ここに私のシナリオですが、私はタブコントロールを持っている、各タブページにはテキストボックスが含まれています。テキストボックスのテキストを検証するためのデータバインディングはすでに完了しています。今、私はTextBoxesから検証されたテキストを表示するには、TabControlの外にComboBoxを作成する必要があります。複数のテキストボックスからComboBoxアイテムを取得する

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

私はWPFの初心者です。私は解決策についてさらに読むために多くの参考文献を必要とするかもしれません。ありがとう。

答えて

1

ここでコンボボックスの4つのテキストボックスのテキストが表示されます簡単な解決策です:彼らはあなたがコンバータを使用することができ、空にいるときにコンボボックス内の項目を非表示にするには :

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

は、コンバータを使用します。answer.Iため

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

おかげで、コンボボックスが空のアイテムが表示されていることに気づきましたドロップダウンリストに表示されます。次に空白の項目を表示させないようにすることです。提案は大歓迎です。 – kirchhoff

+0

空のコンボボックスアイテムを隠す答えを編集しました。 – Eirik

関連する問題