50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

نحوه استفاده متغیر و 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 استفاده کرد؟؟

پرسیده شده در 1398/06/13 توسط

4 پاسخ

0

سلام، شما می تونید موقعی که دارید خروجی رکورد ها رو از دیتابیس می خونید در زمان کوئری مسیر رو به فایل اضافه کنید، برای مثال:

 

var filesPath = "C:\\Users\\
var result = dbContext.Files.Select(f=> new
{
Id = f.Id,
FilePath = filesPath + f.FileName
}).ToList()

 

با کد بالا، بعد از اجرای کوئری مسیر به نام فایل اضافه میشه.

پاسخ در 1398/06/16 توسط
0

ممنون حسین جان
بعد از کلی بررسی به همین نتیجه رسیدم
ولی به صورت زیر

        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"/>
اینجوری مشکل حل میشه.
نظرتون چیه؟ این جوری خوبه؟

 

پاسخ در 1398/06/16 توسط
0

سلام مجدد، روشی که شما رفتید هم اوکی هست، فقط خصوصیت CustomerImage سمت کلاینت اصلاح میشه و تفاوت چندانی نمی کنه.

پاسخ در 1398/06/16 توسط

پاسخ شما