2010-08-27 20 views
0

在我的TreeView中有幾個HierarchicalDataTemplates。在其中的一箇中,如果在這種情況下屬性HasMissingFit爲真,我想在標籤的右側顯示一張圖片,否則應該不會顯示圖片。(可選)在HierarchicalDataTemplate中顯示圖像

如果我希望圖像總是存在,我知道我可以用一個帶有轉換器的Image標籤來做到這一點,但如果該屬性爲false,則圖像根本不應該顯示。

回答

2

最簡單的方法可能是將圖像的Visibility-Property綁定到HasMissingFit,使用Converter將True轉換爲Visible和False轉換爲隱藏(或者如果您希望將該空間用於其他內容,則摺疊)。 如果您希望圖像真的不存在,您需要在圖像的某個父級創建一個觸發器。如果HasMissingFit == True,則使用自定義樣式定義ContentControl,並以樣式定義觸發器,將圖像設置爲Content。

1

有我能想到的幾個選項:

  1. 可以綁定這個屬性到圖像的可見性。在這種情況下,圖像存在但不會畫到屏幕上。
  2. 您可以創建一個DataTemplateSelector,以根據此屬性選擇正確的DataTemplate。
0

我想到的第一件事就是使用一個Image,綁定到一個屬性,該屬性返回如果設置了其他屬性的圖像,否則返回null。

這使得它很容易擴展,以防您稍後決定爲不同的屬性設置不同的圖標。

在後臺代碼:

public ImageSource MyImage 
{ 
    get 
    { 
     if (this.IsImageFit) 
      return .....; // return an ImageSource using your image 
     else 
      return null; 
    } 
} 
1

相關的轉換器上的崩潰/可見光圖像,你可以交替做true轉換您的ImageSource的轉換器,還是假空

2

你當然不需要編寫了一個值轉換器或模板選擇:只需設定ImageVisibilityCollapsed,然後風格連接到使用一個DataTriggerImage,如:

<Style TargetType="Image">  
    <Style.Triggers> 
     <DataTrigger Binding="{Binding HasMissingFit}" Value="True"> 
     <DataTrigger.Setters> 
      <Setter Property="Visibility" Value="Visible"/> 
     </DataTrigger.Setters> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

根據您的佈局,將Visibility設置爲HiddenCollapsed更有意義;這樣,出現或消失的圖像不會影響佈局的流向。