2017-04-06 50 views
0

我目前正在嘗試conditionaly顯示圖像。我讀了很多關於valueConverters和triggers的信息,但我堅信這個簡單問題必須有一個更簡單的解決方案。c中的圖像的有條件顯示#

的XAML:

<Image Source="C:\Users\Niko\Pictures\red.png" IsEnabled="{Binding IsOn}"></Image> 

後面的代碼:

namespace MVVM { 
public class Globals 
{ 
    int i = 2; 

    public bool IsOn 
    { 
     get 
     { 
      if (i == 1) 
       return true; 
      else 
       return false; 
     } 

    } 
} 

我打得四處整數,看是否得到圖像顯示或者不顯示。任何建議都非常令人讚歎!

+5

你想要綁定一個布爾到Image的'Visibility'屬性並使用BooleanToVisibilityConverter。除非您設置樣式以更改可見性,否則IsEnable不會隱藏圖像。 – Lithium

+3

使用MVVM時,您可以在ViewModel中將'Image'的'Visibility'綁定到'bool',並使用'IValueConverter'將'bool'轉換爲'Visibility.Visible'或'Visibility.Collapse'。我會在ViewModel中使用'bool'而不是'Visibility',因爲它是更清晰的方法,ViewModel不應該知道'Image'的'Visibilty'。 –

回答

5

將圖像的Visibility綁定到IsOn並使用內置的BooleanToVisibilityConverter

<Image Source="C:\Users\Niko\Pictures\red.png" Visibility="{Binding Visibility, Converter={StaticResource BoolToVis}}"/> 

然後添加BooleanToVisibilityConverter作爲靜態資源無論是在<Window.Resources>只是該窗口或<Application.Resources>爲您的整個應用程序。

<BooleanToVisibilityConverter x:Key="BoolToVis"/> 

請注意,x:Key是用於在StaticResource之後引用轉換器的名稱。

4

如果你不想把Visibility財產在你ViewModel並不願意使用轉換器,您可以使用DataTrigger(這裏我沒有ViewModel可言,圖像是,如果可見ToggleButton被選中):

<Image Source="C:\Users\Niko\Pictures\red.png"> 
     <Image.Style> 
      <Style TargetType="{x:Type Image}"> 
       <Setter Property="Visibility" 
         Value="Visible" /> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding IsChecked, ElementName=tg}" 
           Value="False"> 
         <Setter Property="Visibility" 
           Value="Hidden" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Image.Style> 
    </Image> 

    <ToggleButton Name="tg" Content="Show" HorizontalAlignment="Left" VerticalAlignment="Bottom" /> 
+0

不知道是否_easier_雖然:)(如問題中所要求的) – Default

+0

我目前正在玩這個代碼。我對XAML相當陌生,我不想使用按鈕,我想通過虛擬機中的一個條件來實現它,以便進一步使用。我可以爲此使用** tg **嗎? –

+0

@Niko_fhtw您可以使用,而不用按鈕 – Arie