【发布时间】:2019-04-18 10:45:56
【问题描述】:
我遇到了一个特殊的问题,我想在我的WPF 解决方案中添加一个位于我的Resources 文件夹中的图像。我得到的是图像路径而不是图像名称(../../Resources/Excel.png)。我尝试了很多东西,比如将image 转换为Byte[],但它似乎不起作用。这是我的代码。
public DataTable BDU_DtmDcmDfmSelect(string Tablename)
{
DataTable tableData = new DataTable();
tableData = dal.DAL_BDU_DtmDcmDfmSelect(Tablename);
// All filter column in list
List<String> FilterColumns = new List<string>();
FilterColumns.Add("INS_DTE"); FilterColumns.Add("UPDD_DTE");
FilterColumns.Add("DEL_DTE"); FilterColumns.Add("INSD_BY");
FilterColumns.Add("UPDD_BY"); FilterColumns.Add("DELD_BY");
// Reading all table column to a list as can not run loop when removing
List<String> TableColumns = new List<string>();
foreach (var text in tableData.Columns)
{
TableColumns.Add(text.ToString());
}
// Running loop by comparing the both the column to avoid exception
foreach (string tablecol in TableColumns)
{
foreach (string filtercol in FilterColumns)
{
if (tablecol == filtercol)
{
tableData.Columns.Remove(filtercol);
}
}
}
//tableData.Columns.Add("Edit", typeof(bool)) ;
//tableData.Columns.Add("Delete" ,typeof(bool));
//DataColumn workCol = tableData.Columns.Add("CustID", typeof(int));
//for (int i = 0; i < tableData.Columns.Count; i++)
//{
// if (i == (tableData.Columns.Count-1))
// {
// for (int j = 0; j < tableData.Rows.Count; j++)
// {
// tableData.Rows[j][i] = 5;
// }
// }
//}
tableData.Columns.Add("EditImage", typeof(BitmapImage));
BitmapImage image = new BitmapImage(new Uri("../../Resources/Excel.png", UriKind.RelativeOrAbsolute));
// ;
/// Image img = new Image();
//img.Source = @"../../Resources/Excel.png";
for (int i = 0; i < tableData.Columns.Count; i++)
{
if (i == (tableData.Columns.Count - 1))
{
for (int j = 0; j < tableData.Rows.Count; j++)
{
tableData.Rows[j][i] = image;
}
}
}
tableData.Columns.Add("EditImage1", typeof(Image));
Button btn = new Button();
btn.Content = "Edit";
btn.Background = new SolidColorBrush(Color.FromArgb(200, 233, 222, 100));
for (int i = 0; i < tableData.Columns.Count; i++)
{
if (i == (tableData.Columns.Count - 1))
{
for (int j = 0; j < tableData.Rows.Count; j++)
{
tableData.Rows[j][i] = btn;
}
}
}
//DataColumn imagecol = new DataColumn();
//tableData.Columns.Add(imagecol);
//DataColumn imagecol1 = new DataColumn();
//imagecol1.DataType = System.Type.GetType("System.Byte[]");
return tableData;
}
上述方法已被调用,输出已分配给GridView
public void displayTableData(String TableName)
{
var TableName1 = CmbMasterTable.SelectedItem.ToString();
var Tablename2 = CmbMasterTable.SelectedValue.ToString();
var Tablename3 = CmbMasterTable.SelectionBoxItem.ToString();
if (!string.IsNullOrEmpty(TableName))
{
DisplayGrid.ItemsSource = dcobj.BDU_DtmDcmDfmSelect(TableName).DefaultView;
}
if (!string.IsNullOrEmpty(TableName1))
{
DisplayGrid.ItemsSource = dcobj.BDU_DtmDcmDfmSelect(TableName1).DefaultView;
}
}
具体的XAML 将是
<DataGrid x:Name="DisplayGrid" Grid.Row ="1" >
</DataGrid>
请帮忙。
【问题讨论】:
-
您正在向 DataTable 添加一个按钮而不是图像:tableData.Columns.Add("EditImage1", typeof(Button));所以你想显示图片还是只存储图片?
-
@jdweng 实际上不是第一个。请检查此行上方的代码
-
您打算在哪里显示图像?
-
@mm8 tableData.Columns.Add("EditImage", typeof(BitmapImage));
-
@mm8 后来分配给了一个 GridView。分享一下截图