2011-06-04 55 views
2

目標:
當用戶開始在文本框中輸入文本或字符時txtSearch圖片picEnlarger將被隱藏並被圖片picXmark替換。 默認情況下,picEnlarger將始終顯示,直到輸入數據將應用於文本框txtSearch。按順序,文本框中沒有數據然後顯示picEnlarger並隱藏picXmark。將圖片顯示爲隱藏或可見

問題:
當用戶在名爲txtSearch的文本框中輸入字符時,顯示圖片picXmark並隱藏圖片picEnlarger時出現問題。

當我嘗試在C#中編碼以獲得此功能時,運行時不會產生任何影響。

我嘗試使用代碼:

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

但沒有效果發生。從Stock.xaml


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> 

類股票

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> 

當文本輸入的一個圖像將變得可見,而其他人會被隱藏。

+0

謝謝你的幫助。我需要更多的補充,布萊恩到這個網站來實現我的功能「http://zamjad.wordpress.com/2010/06/29/negation-condition-in-data-trigger/」 – 2011-06-05 09:43:34