2012-01-17 13 views
0

私はいくつかの列を持つデータグリッドを持っています。列の1つは、自分のリソースからイメージを表示するtemplateColumnです。ここでXAMLは次のとおりです。私はデバッグし、直後にブレークポイントを置くときオブジェクトのリストにバインドされたデータグリッド内のリソースからのイメージの表示

foreach (string path in osapdFiles) 
{ 
    if (!string.IsNullOrEmpty(path)) 
    { 
     PluginDescription desc = PluginHelper.Deserialize(path); 
     desc.Upgrade = Properties.Resources.upgrade; 
     desc.Status = "Stopped"; 
     desc.Enabled = false; 
     pluginList.Add(desc); 
    } 
} 

dgLocalPlugins.ItemsSource = pluginList; 

:ここ

<DataGrid AutoGenerateColumns="False" Height="415" HorizontalAlignment="Left" Margin="0,34,0,0" Name="dgLocalPlugins" VerticalAlignment="Top" Width="806" SelectionMode="Single" AlternatingRowBackground="#CDEBEBEB"> 
    <DataGrid.Columns> 
     <DataGridCheckBoxColumn Header="Enabled" Binding="{Binding Path=Enabled}" /> 
     <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" MinWidth="200" /> 
     <DataGridTextColumn Header="Status" Binding="{Binding Path=Status}" /> 
     <DataGridTextColumn Header="Version" Binding="{Binding Path=Version}" /> 
     <DataGridHyperlinkColumn Header="Wiki" Binding="{Binding Path=WikiUrl}" MaxWidth="100" /> 
     <DataGridTextColumn Header="Author" Binding="{Binding Path=Author}" /> 
     <DataGridTemplateColumn> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Image Source="{Binding Path=Upgrade}" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

は、その背後にあるコードの肉がデータグリッドがバインドされているオブジェクトのリストを移入していますdesc.Upgradeが設定されています。そこに何かがあるのがわかりますが、ImageがDataGridに表示されていません。画像を表示するには何が必要ですか?

答えて

0

PluginDescriptionクラスがINotifyPropertyChangedを実装していることを確認して、プロパティが設定されているときにバインディングによってUIが更新されるようにします。

+0

問題があるかどうかはわかりません。その他の列はすべて正しく表示されます。 – Brian

+0

いいえ、その実装をPluginDescriptionクラスに追加しましたが、それでもイメージは表示されません。 – Brian

0

UpgradeのプロパティがPluginDescriptionのクラスに対して正しくINotifyPropertyChangedを実装していれば、Path自体は解決していないと思います。

最初のPluginDescriptionのパスをデータグリッドの外側の画像に置きます。

すなわち

<DataGrid Name="dgLocalPlugins" ... /> 
    <Image Source="{Binding ElementName=dgLocalPlugins, Path=ItemsSource[0].Upgrade}"/> 

そして、この単一のイメージのロード正しくご確認ください。それができない場合は、パスが解決されていないと確信しています。

関連する問題