基于WPF中ComboBox项的文本框文本

时间:2011-02-10 11:29:32

标签: c# wpf

我在我的应用程序中有一个Combobox,其中Comboboxitems是“是”和“否” 如果选择了Comboboxitem yes,我想将我的文本框的文本分配为“已清除”如果选择了Comboboxitem“否”,我想将“未清除”如何选择如何在WPF上执行此操作

3 个答案:

答案 0 :(得分:1)

如果你想在XAML中完全使用它,可以在TextBox上使用element binding(到复选框/组合框),然后实现value converter将是/否转换为适当的字符串。

或者,如果使用MVVM,您可以将复选框IsChecked或组合框SelectedValue绑定到视图模型上的属性,并在该属性设置器中,通知另一个属性,即文本框文本,它只有一个getter,它根据你的第一个视图模型属性返回相应的字符串。将TextBox Text属性绑定到此新视图模型属性。

答案 1 :(得分:1)

创建IValueConverter的实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Data;

namespace XAMLConverter
{
    public class ComboBoxConverter : IValueConverter
    {


        object IValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            try
            {                
                if (value.ToString() == "Yes")
                    return "Cleared";
                else if (value.ToString() == "No")
                    return "Not Cleared";
                else
                    return "";

            }
            catch
            {
                return "";
            }
        }

        object IValueConverter.ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}

将您的命名空间添加到XAML:

xmlns:conv="clr-namespace:XAMLConverter"

为转换器添加资源:

<Window.Resources>        
    <conv:ComboBoxConverter x:Key="ComboBoxConverter" />        
</Window.Resources>

然后添加您的控件:

    <StackPanel>
        <ComboBox Name="SelectControl">
            <ComboBoxItem Content="Yes" />
            <ComboBoxItem Content="No" />
        </ComboBox>

        <TextBox Text="{Binding ElementName=SelectControl, 
                                Path=SelectedItem.Content, 
                                Converter={StaticResource ComboBoxConverter}}" 
        />

    </StackPanel>

答案 2 :(得分:1)

触发解决方案在这里:

        <ComboBox Name="cb">
            <ComboBoxItem>Yes</ComboBoxItem>
            <ComboBoxItem>No</ComboBoxItem>
        </ComboBox>
        <TextBox>
            <TextBox.Style>
                <Style TargetType="TextBox">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=cb, Path=SelectedItem.Content}" Value="Yes">
                            <Setter Property="Text" Value="cleared"/>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding ElementName=cb, Path=SelectedItem.Content}" Value="No">
                            <Setter Property="Text" Value="not cleared"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>