图片来自资源
Image Source from Resources
我的问题:
我需要一个包含 4 列的 DataGrid。其中之一应该显示图像。
我为此使用了 DataGridTemplateColumn,其他的都是简单的 TextColumns。
我每行需要不同的图像,这就是为什么我需要将它们与 Class.
中的其余 属性 绑定
我尝试在设置
时使用 属性 图像类型
AutoGenerateColumns="true"
我已经厌倦了用字符串 属性 绑定图像路径,该字符串填充了我的项目资源中的路径,但这也不起作用。
有谁知道如何解决这个问题?
我后面的代码是:
public List<MyClass> MyCollection {get; set;}//<--- This is what I bind !
public class MyClass
{
public string A { get; set; }
public string ImagePath { get; set; }
public int X { get; set; }
public string User { get; set; }
}
我的XAML是这样的:
<Window.Resources>
<CollectionViewSource x:Key="EntryCollection" Source="{Binding Path=MyCollection , Mode=OneWay}"/>
</Window.Resources>
<DataGrid ItemsSource="{Binding Source={StaticResource EntryCollection}, Mode=OneWay}" SelectedItem="{Binding Path=SelectedEntry, Mode=TwoWay}"
IsReadOnly="true"
AutoGenerateColumns="False"
SelectionUnit="FullRow"
SelectionMode="Extended"
HorizontalAlignment="Stretch"
Grid.Column="0"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
Width="Auto">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Image" Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Width="16" Height="16" Source="{Binding Path=ImagePath, Mode=OneWay}" VerticalAlignment="Top" HorizontalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="User" Binding="{Binding Path=User, Mode=OneWay}" Width="Auto" />
<DataGridTextColumn Header="StringA" Binding="{Binding Path=A, Mode=OneWay}" Width="Auto" />
<DataGridTextColumn Header="INT X" Binding="{Binding Path=X, Mode=OneWay}" Width="Auto" />
提前致谢!
你的 ImagePath 属性 应该是
ImagePath="pack://application:,,,/<your resources>/yourImage.png";
我的问题:
我需要一个包含 4 列的 DataGrid。其中之一应该显示图像。 我为此使用了 DataGridTemplateColumn,其他的都是简单的 TextColumns。 我每行需要不同的图像,这就是为什么我需要将它们与 Class.
中的其余 属性 绑定我尝试在设置
时使用 属性 图像类型AutoGenerateColumns="true"
我已经厌倦了用字符串 属性 绑定图像路径,该字符串填充了我的项目资源中的路径,但这也不起作用。
有谁知道如何解决这个问题?
我后面的代码是:
public List<MyClass> MyCollection {get; set;}//<--- This is what I bind !
public class MyClass
{
public string A { get; set; }
public string ImagePath { get; set; }
public int X { get; set; }
public string User { get; set; }
}
我的XAML是这样的:
<Window.Resources>
<CollectionViewSource x:Key="EntryCollection" Source="{Binding Path=MyCollection , Mode=OneWay}"/>
</Window.Resources>
<DataGrid ItemsSource="{Binding Source={StaticResource EntryCollection}, Mode=OneWay}" SelectedItem="{Binding Path=SelectedEntry, Mode=TwoWay}"
IsReadOnly="true"
AutoGenerateColumns="False"
SelectionUnit="FullRow"
SelectionMode="Extended"
HorizontalAlignment="Stretch"
Grid.Column="0"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
Width="Auto">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Image" Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Width="16" Height="16" Source="{Binding Path=ImagePath, Mode=OneWay}" VerticalAlignment="Top" HorizontalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="User" Binding="{Binding Path=User, Mode=OneWay}" Width="Auto" />
<DataGridTextColumn Header="StringA" Binding="{Binding Path=A, Mode=OneWay}" Width="Auto" />
<DataGridTextColumn Header="INT X" Binding="{Binding Path=X, Mode=OneWay}" Width="Auto" />
提前致谢!
你的 ImagePath 属性 应该是
ImagePath="pack://application:,,,/<your resources>/yourImage.png";