我有带按钮的文本框。我的目标是,如果文本框为空,则应禁用该按钮(表示0.5不透明度)。如果用户在文本框中输入内容,则该按钮应设置为可见。就像用户点击了按钮一样,它应该被取消激活,除非它为了点击它的目的而完成工作?
任何想法,怎么做?
我的代码;
<Button Content="Go !" Foreground="White" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="283,-3,0,0" Width="161" Name="searchbutton" Click="search" Height="78" BorderBrush="Transparent"/>
答案 0 :(得分:0)
如果文本框文本为空,则此控件模板可用于设置按钮的不透明度。
<ControlTemplate x:Key="myButtonTemplate" TargetType="{x:Type ContentControl}">
<StackPanel Orientation="Horizontal">
<TextBox Width="100" x:Name="searchTxt" Text="{Binding}"></TextBox>
<Button x:Name="myButton">Search</Button>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger SourceName="searchTxt" Property="Text" Value="">
<Setter TargetName="myButton" Property="Opacity" Value="0.2"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
控制实施模板
<ContentControl Template="{StaticResource myButtonTemplate}">
由于
答案 1 :(得分:0)
您可以使用值转换器将TextBox的文本转换为按钮的不透明度值:
<TextBox x:Name="txtBox" />
<Button Opacity="{Binding Text, ElementName=txtBox, Converter={StaticResource textToOpacityConverter}}" Content="Go !" Foreground="White" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="283,-3,0,0" Width="161" Name="searchbutton" Click="search" Height="78" BorderBrush="Transparent" />
这是价值转换器:
public class TextToOpacityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (string.IsNullOrEmpty(value as string))
{
return 0.5;
}
return 1;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
如果您需要有关ValueConverter的更多信息,请参阅http://www.c-sharpcorner.com/uploadfile/dpatra/value-converter-in-wpf-part-i/
答案 2 :(得分:0)
就像说Emanuele一样,使用IsEnabled属性会将按钮的颜色设置为灰色:)
答案 3 :(得分:0)
您可以使用TextChanged
事件,然后在其中的文本上使用“长度”。对于按钮,只需使用Click
事件并将Opacity
设置为您想要的值。