0

我有带按钮的文本框。我的愿望是,如果文本框为空,则应停用按钮(意味着 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"/>
4

4 回答 4

0

如果 Textbox 文本为空,此控件模板可用于设置按钮的不透明度。

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

谢谢

于 2013-09-02T05:37:30.787 回答
0

您可以使用值转换器将 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/

于 2013-09-02T08:46:09.870 回答
0

就像 Emanuele 说的那样,只使用 IsEnable 属性会将按钮的颜色设置为灰色:)

于 2013-09-02T11:41:04.640 回答
0

您可以使用TextChanged事件,然后在其中的文本上使用 Length。对于按钮,只需使用Click事件并设置Opacity为您想要的值。

于 2013-09-02T18:18:22.390 回答