2013-10-07 116 views
0

我有這樣的XAML代碼WPF數據綁定和圖像

<ListView x:Name="listOrderList" Margin="58,55,0,0" Background="{x:Null}"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="DESCRIPTION" DisplayMemberBinding="{Binding Description}"/> 
      <GridViewColumn Header="STATUS"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <Image Source="{Binding Status}"/> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 

在C#中我有一個enum的狀態,我明明知道<Image Source="{Binding Status}"/>是行不通的。但是,如何做一些事情,例如我在Status enum中有兩個值。說是和不可以。我如何將小圖標分配給枚舉的值,並輕鬆使用Bindings。

謝謝你。

+1

看一看['IValueConverter'(http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx) –

回答

2

退房IValueConverter

這樣,您可以檢查其值由綁定傳遞,然後創建Image對象來顯示。

1

您可以將圖標圖像路徑設置爲Enum,然後將DataGrid與該Enum綁定。

  <DataGridTemplateColumn x:Name="colStatus" Width="160" Header="Status"> 
         <DataGridTemplateColumn.CellTemplate> 
          <DataTemplate> 
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" OverridesDefaultStyle="True" Width="135"> 
            <Image Height="14" Margin="2,0,0,0" HorizontalAlignment="Left" Source="{Binding Status}" Width="14" /> 
            </StackPanel> 
          </DataTemplate> 
         </DataGridTemplateColumn.CellTemplate> 
        </DataGridTemplateColumn> 
+0

怎麼樣?可以添加一個示例代碼? – Butzke

+0

我編輯了我的答案檢查它... –

2

要麼使用綁定轉換器,要麼將DataTriggers添加到DataTemplate中。下面的示例假定以下枚舉

public enum Status { Status1, Status2 } 

,並設置圖像的Source屬性取決於Status屬性的值不同的圖像資源。

<Window.Resources> 
    <BitmapImage x:Key="Image1" UriSource="..."/> 
    <BitmapImage x:Key="Image2" UriSource="..."/> 
</Window.Resources> 

... 

<DataTemplate> 
    <Image x:Name="image"/> 
    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding Status}" Value="Status1"> 
      <Setter TargetName="image" Property="Source" 
        Value="{StaticResource Image1}"/> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Status}" Value="Status2"> 
      <Setter TargetName="image" Property="Source" 
        Value="{StaticResource Image2}"/> 
     </DataTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate>