[英]WPF - WP8: how to hide button visiblity?
我有带按钮的文本框。 我的愿望是,如果文本框为空,则应禁用该按钮(意味着不透明度为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"/>
如果文本框文本为空,则可以使用此控件模板设置按钮的不透明度。
<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}">
谢谢
您可以使用值转换器将TextBox的文本转换为按钮的Opacity值:
<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/
就像Emanuele所说的那样,仅使用IsEnable属性会将按钮的颜色设置为灰色:)
您可以使用TextChanged
事件,然后在其中的文本上使用Length。 对于按钮,只需使用Click
事件并将Opacity
设置为所需值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.