2010-08-09 74 views
2

我在datagrid中的內容爲真/假的列,我如何根據文本更改此圖像的true/false(布爾值)?將真/假更改爲圖像

我正在使用c#wpf。

編輯:

<dg:DataGridTemplateColumn MinWidth="70" Header=" Is Done2"> 
    <dg:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <Image Name="imgIsDone" Source="../Resources/Activo.png"/> 
      <DataTemplate.Triggers> 
       <DataTrigger Binding="{Binding Path=IsDone}" Value="False"> 
        <Setter TargetName="imgIsDone" Property="Source" Value="../Resources/Inactivo.png"/> 
       </DataTrigger> 
      </DataTemplate.Triggers> 
     </DataTemplate> 
    </dg:DataGridTemplateColumn.CellTemplate> 
</dg:DataGridTemplateColumn> 

回答

9

使用一個DataGridTemplateColumn提供一個DataTemplate用於包含圖像的列,使用的值轉換器或一個數據觸發器來設置基於列的值的圖像源。下面是一個使用數據觸發的例子:

<DataGridTemplateColumn> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <Image Name="MyImage" Source="TrueImage.png"/> 
      <DataTemplate.Triggers> 
       <DataTrigger Binding="{Binding BoolColumn}" Value="False"> 
        <Setter TargetName="MyImage" Property="Source" Value="FalseImage.png"/> 
       </DataTrigger> 
      </DataTemplate.Triggers> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 
+0

剛編輯主題,到我有的代碼,並給我一個錯誤。 首先說:文件...不是項目的一部分,或者它的「構建動作」沒有設置爲資源.. 當我運行它時,行 表示'在'System.Windows.Baml2006.TypeConverterMarkupExtension'上提供值會引發異常。'行號「64」和行位置「46」。 – Luis 2010-08-10 09:42:22

11
public class BoolToImage : IValueConverter 
{ 
    public Image TrueImage { get; set; } 
    public Image FalseImage { get; set; } 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (!(value is bool)) 
     { 
      return null; 
     } 

     bool b = (bool)value; 
     if (b) 
     { 
      return this.TrueImage; 
     } 
     else 
     { 
      return this.FalseImage; 
     } 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
在XAML

然後,作爲一種資源:

<local:BoolToImage TrueImage="{StaticResource Image}" FalseImage="{StaticResource FalseImage}" x:Key="BoolImageConverter"/> 

然後在你的綁定:

ImageSource={Binding Path=BoolProp,Converter={StaticResource BoolImageConverter}}"