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