在我的TreeView中有幾個HierarchicalDataTemplates。在其中的一箇中,如果在這種情況下屬性HasMissingFit
爲真,我想在標籤的右側顯示一張圖片,否則應該不會顯示圖片。(可選)在HierarchicalDataTemplate中顯示圖像
如果我希望圖像總是存在,我知道我可以用一個帶有轉換器的Image
標籤來做到這一點,但如果該屬性爲false,則圖像根本不應該顯示。
在我的TreeView中有幾個HierarchicalDataTemplates。在其中的一箇中,如果在這種情況下屬性HasMissingFit
爲真,我想在標籤的右側顯示一張圖片,否則應該不會顯示圖片。(可選)在HierarchicalDataTemplate中顯示圖像
如果我希望圖像總是存在,我知道我可以用一個帶有轉換器的Image
標籤來做到這一點,但如果該屬性爲false,則圖像根本不應該顯示。
最簡單的方法可能是將圖像的Visibility-Property綁定到HasMissingFit,使用Converter將True轉換爲Visible和False轉換爲隱藏(或者如果您希望將該空間用於其他內容,則摺疊)。 如果您希望圖像真的不存在,您需要在圖像的某個父級創建一個觸發器。如果HasMissingFit == True,則使用自定義樣式定義ContentControl,並以樣式定義觸發器,將圖像設置爲Content。
有我能想到的幾個選項:
我想到的第一件事就是使用一個Image,綁定到一個屬性,該屬性返回如果設置了其他屬性的圖像,否則返回null。
這使得它很容易擴展,以防您稍後決定爲不同的屬性設置不同的圖標。
在後臺代碼:
public ImageSource MyImage
{
get
{
if (this.IsImageFit)
return .....; // return an ImageSource using your image
else
return null;
}
}
相關的轉換器上的崩潰/可見光圖像,你可以交替做true轉換您的ImageSource的轉換器,還是假空
你當然不需要編寫了一個值轉換器或模板選擇:只需設定Image
的Visibility
到Collapsed
,然後風格連接到使用一個DataTrigger
的Image
,如:
<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
設置爲Hidden
比Collapsed
更有意義;這樣,出現或消失的圖像不會影響佈局的流向。