Отображать изображения как скрытые или видимые

#c# #wpf #image #xaml #visibility

#c# #wpf #изображение #xaml #видимость

Вопрос:

Цель:
Когда пользователь начнет вводить текст или символы в текстовом поле txtSearch, значение picture picEnlarger будет скрыто и заменено на picture picXmark. По умолчанию picEnlarger всегда будет отображаться до тех пор, пока входные данные не будут применены в текстовом поле txtSearch. В порядке word, нет данных в текстовом поле, затем отобразите picEnlarger и скройте picXmark.

Проблема:
Возникает проблема с отображением изображения picXmark и скрытием изображения picEnlarger, когда пользователь начинает вводить символы в текстовое поле с именем txtSearch.

Когда я пытался кодировать на C #, чтобы получить эту функциональность, никакого эффекта во время выполнения не возникало.

Я пытался использовать код:

 picEnlarger = new Image();  
picXmark = new Image();
  

Но никакого эффекта не произошло.


XAML-код из Stock.xaml:

 <Canvas Height="39.667" Margin="8,0,215.397,0" VerticalAlignment="Top">
    <Button x:Name="btnNewProduct" Content="New" Width="75" Click="btnNewProduct_Click" Height="20.277" RenderTransformOrigin="0.667,1.726" d:LayoutOverrides="VerticalAlignment, Margin" Canvas.Left="0.001" Canvas.Top="18.723" />
    <Button x:Name="btnAddDelivery" Content="Add quantity" Width="75" Click="btnAddDelivery_Click" d:LayoutOverrides="VerticalAlignment, Margin" Height="20.277" Canvas.Left="79.001" Canvas.Top="18.723" />
    <Button x:Name="btnDeleteProduct" Content="Delete" Width="75" RenderTransformOrigin="0.107,1.843" Click="btnDeleteProduct_Click" Height="20.277" Canvas.Left="158.001" d:LayoutOverrides="HorizontalAlignment, VerticalAlignment, Width" Canvas.Top="18.723" />
    <Button x:Name="btnEdit" Content="Edit" Canvas.Left="237.001" Width="75" Canvas.Top="18.723" Click="btnEdit_Click" />
    <TextBox Name="txtSearch" Canvas.Left="391.36" TextWrapping="Wrap" Canvas.Top="18.723" Width="143.243" TextChanged="txtSearch_TextChanged" Text=" Search article" PreviewMouseLeftButtonDown="txtSearch_PreviewMouseLeftButtonDown" TextInput="txtSearch_TextInput">            
        </TextBox>

        <Label Content="Advanced Search" HorizontalAlignment="Left" Canvas.Left="444.289"/>
        <Image x:Name="picXmark" Height="8" Source="/MediaStore;component/Bilder/search_xmark.gif" Stretch="Fill" Width="8" Canvas.Left="519.853" Canvas.Top="24.167" Visibility="Hidden" />
    <Image x:Name="picEnlarger" Height="14" Canvas.Left="513.75" Source="/MediaStore;component/Bilder/search_enlarger2.gif" Stretch="Fill" Canvas.Top="21.527" Width="14" Visibility="Hidden" ImageFailed="picEnlarger_ImageFailed" />

</Canvas>
  

Класс Stock

 private void txtSearch_TextChanged(object sender, TextChangedEventArgs e)
{

    picEnlarger = new Image();
    picXmark = new Image();

    if (txtSearch.Text != "")
    {


        picEnlarger.Visibility = Visibility.Collapsed;
        picXmark.Visibility = Visibility.Visible;



        RegularSearch myRegularSearch = new RegularSearch();

        myRegularSearch.Test(txtSearch.Text);

    }
    else
    {
        picEnlarger.Visibility = Visibility.Visible;
        picXmark.Visibility = Visibility.Hidden;                
    }

}


    private void txtSearch_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        txtSearch.Text = "";
    }
  

Ответ №1:

Теоретически вы должны иметь возможность просто использовать триггеры для этого, например

 <TextBox Name="txtSearch" />
<Image Name="ImageOne">
    <Image.Style>
        <Style TargetType="{x:Type Image}">
            <Setter Property="Visibility" Value="Visible" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding Text, ElementName=txtSearch}"
                             Value="">
                    <Setter Property="Visibility" Value="Hidden" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>
<Image Name="ImageOne">
    <Image.Style>
        <Style TargetType="{x:Type Image}">
            <Setter Property="Visibility" Value="Hidden" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding Text, ElementName=txtSearch}"
                             Value="">
                    <Setter Property="Visibility" Value="Visible" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>
  

При вводе текста одно изображение станет видимым, в то время как другое будет скрыто.

Комментарии:

1. Спасибо за вашу помощь. Мне нужно было больше дополнений, чтобы перейти на этот веб-сайт для достижения моей функциональности » zamjad.wordpress.com/2010/06/29 /… »