نحوه استفاده متغیر و property درقسمت xaml - wpf
با سلام خدمت عزیزان
در قسمت کد های c# wpf فرض کنید یه کدی داشته باشیم:
1
|
public string test = "C:/Users/861.jpg" ; |
چطوری میشه این test را بایند کنم به Datagrid
کد های xaml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<DataGrid x:Name= "datagrid_test" HorizontalAlignment= "Left" Margin= "33,129,0,0" VerticalAlignment= "Top" Height= "186" Width= "940" > <DataGrid.Columns> <DataGridTemplateColumn Header= "تصویر" > <DataGridTemplateColumn.CellTemplate> <DataTemplate > <Image Source= "{Binding this.test}" Height= "50" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn Header= "کاربر ثبت کننده" Binding= "{Binding FullName}" Width= "90" > </DataGridTextColumn> </DataGrid.Columns> </DataGrid> |
1
|
<Image Source= "{Binding this.test}" Height= "50" /> درست کار نمی کنه |
اسم فایل در دیتابیس هست!
زمانی که در دیتابیس مسیر کامل به اسم فایل را ذخیره کنم و ستون مربطه را Binding کنم مشکلی ندارم
اما الان در دیتابیس فقط اسم فایل را دارم و مسیر را بعدش به دست میارم و کنارش میارم و در یک متغیر ذخیره می کنم مثل نمونه بالا
الان می خوام این مسیر را که در متغیر ذخیره کردم Binding کنم
اما چطوری میشه از متغیر ها و پراپرتی در xaml استفاده کرد؟؟
4 پاسخ
سلام، شما می تونید موقعی که دارید خروجی رکورد ها رو از دیتابیس می خونید در زمان کوئری مسیر رو به فایل اضافه کنید، برای مثال:
var filesPath = "C:\\Users\\
var result = dbContext.Files.Select(f=> new
{
Id = f.Id,
FilePath = filesPath + f.FileName
}).ToList()
با کد بالا، بعد از اجرای کوئری مسیر به نام فایل اضافه میشه.
ممنون حسین جان
بعد از کلی بررسی به همین نتیجه رسیدم
ولی به صورت زیر
private string Path()
{
string path = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
DirectoryInfo directory = new DirectoryInfo(path);
string imagePath = path + @"\MyAppName\Images\";
return imagePath;
}
-----------------
private void BindGrid()
{
/////////یک query ساده
var query = db.Database.SqlQuery("select * from Customers").ToList();
///////// اضافه کردن مسیر عکس به نام عکس ذخیره شده در دیتا بیس
foreach (var t in query)
{
t.CustomerImage = Path() + t.CustomerImage;
}
//پر کردن DataGrid
DataG_Customer.ItemsSource = query;
----------------
این بایند را هم وصل کردم به همون ستون دیتابیس
"{Binding CustomerImage}"
Height=
"50"
/>
"{Binding CustomerImage}"
Height=
"50"
/>
اینجوری مشکل حل میشه.
نظرتون چیه؟ این جوری خوبه؟
تشکر حسین جان
سلام مجدد، روشی که شما رفتید هم اوکی هست، فقط خصوصیت CustomerImage سمت کلاینت اصلاح میشه و تفاوت چندانی نمی کنه.