2017-01-19 39 views
0

我有一個圖像元素,通過數據綁定填充 - 如果綁定返回一個路徑,圖像繪製。如果沒有(路徑進入一個空字符串),我們沒有圖像。圖像元素DataTriger風格設置器

<Image Source="{Binding Path=.Screenshot, Mode=OneWay}" Stretch="Fill" Margin="5,5,5,5" /> 

行之有效,除了保證金應用於佈局不管是什麼(這看起來壞空圖像)。我想我會做一個DataTrigger而不是隻適用於保證金的路徑是不是空的,而是:

  • 圖片似乎並不有一番風情(實際上它,忽略這部分)
  • 我不知道如何測試「字符串不是空的」。

我想要做的就像下面的僞XAML。這在XAML中可能嗎?

<Image Source="{Binding Path=.Screenshot, Mode=OneWay}" Stretch="Fill" > 
<Image.Style> 
    <Style TargetType="Image"> 
     <Setter Property="Margin" Value="0,0,0,0" /> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Path=.Screenshot}" Value="!NullOrEmpty"> 
       <Setter Property="Margin" Value="5,5,5,5" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Image.Style> 

我應該使用,也許這是完全不同的做法?

+0

爲什麼奇怪的綁定路徑語法與領先的時期,其中'路徑=截圖'將工作? – Clemens

+0

只是殘留物。代碼來自CustomControl,用於列表框 – Drakestar

+0

*「圖像似乎沒有樣式」* - 它似乎對我來說。你有什麼相反的看法?這絕對是WPF? –

回答

1

做到這反過來,由具有DataTrigger的價值觀null""

<Style TargetType="Image"> 
    <Setter Property="Margin" Value="5,5,5,5" /> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=Screenshot}" Value="{x:Null}"> 
      <Setter Property="Margin" Value="0,0,0,0" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Path=Screenshot}" Value=""> 
      <Setter Property="Margin" Value="0,0,0,0" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

您可能也可能只是對圖像的Source屬性觸發:

<Style TargetType="Image"> 
    <Setter Property="Margin" Value="5,5,5,5" /> 
    <Style.Triggers> 
     <Trigger Property="Source" Value="{x:Null}"> 
      <Setter Property="Margin" Value="0,0,0,0" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+0

謝謝。這應該有助於字符串檢測。需要知道如何實際設計圖像的風格,因爲圖像實際上並沒有.Style(見上文)。 – Drakestar

+1

以第二次看,那部分是我的用戶錯誤。我仍然有斜線結尾立即關閉我的圖像(在上面的編輯中由CoolBlue更正),導致「不存在或不可訪問」編譯錯誤。 – Drakestar