2013-07-11 120 views
1

我有一個搜索框,我試圖通過使用「hasdata」來檢查它是否爲空,如果爲空則返回false,否則返回true,但DataTrigger綁定不起作用。有人能指出我正確的方向嗎?WPF DataTrigger綁定不起作用

代碼:

public bool hasdata 
{ 
    get { if (searchBox.Text.Count() == 0) return false; else return true; } 
} 

XAML:

<telerik:RadWatermarkTextBox x:Name="searchBox"/> 
<Image Source="SomeImage.png" > 
    <Image.Style> 
     <Style TargetType="{x:Type Image}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=hasdata}" Value="True"> 
        <Setter Property="Visibility" Value="Visible"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Path=hasdata}" Value="False"> 
        <Setter Property="Visibility" Value="Hidden"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 
+0

對於這種特殊情況,您應該將'Visibility'綁定到'hasdata'並將綁定'Converter'設置爲'BooleanToVisibilityConverter' – Bolu

+1

你在做什麼錯?不幸的是幾乎所有的事情。你最大的問題是你不明白數據綁定是如何工作的。我強烈建議你停止你正在做的事情,並在MSDN上搜索「WPF中的數據綁定如何工作」。你會發現許多描述過程的頂部鏈接。 – Will

+0

@Bolu:最多隻能評估一次。 – Will

回答

4

的UI具有目前沒有的時候hasdata改變被通知的方式。您需要實現INotifyPropertyChanged接口或使hasdata a DependencyProperty