Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Datagrid image TemplateColumn源绑定wpf_C#_Wpf_Image_Binding_Datagrid - Fatal编程技术网

C# Datagrid image TemplateColumn源绑定wpf

C# Datagrid image TemplateColumn源绑定wpf,c#,wpf,image,binding,datagrid,C#,Wpf,Image,Binding,Datagrid,我使用Datagrid来显示用户信息,除了我想显示用户图像的列之外,文本列的一切都很好, 这是xaml中的数据网格 <DataGrid Name="UserListDataGrid" Margin="10,50,10,10" AutoGenerateColumns="False" En

我使用Datagrid来显示用户信息,除了我想显示用户图像的列之外,文本列的一切都很好, 这是xaml中的数据网格

 <DataGrid Name="UserListDataGrid" Margin="10,50,10,10"  
                                                  AutoGenerateColumns="False" 
                                                  EnableRowVirtualization="False"  
                                                  ItemsSource="{Binding convUsrList}"
                                                  CellStyle="{StaticResource Body_Content_DataGrid_Centering}"
                                                  RowDetailsVisibilityMode="VisibleWhenSelected" 
                                                  CanUserSortColumns="False" 
                                                  CanUserAddRows="False" 
                                                  CanUserResizeRows="False" 
                                                  CanUserReorderColumns="False"
                                                  IsReadOnly="True" 
                                                  Width="900"
                                                  Opacity="0"
                                                  Foreground="Black" 
                                                  GridLinesVisibility="None"
                                                  HeadersVisibility="All"
                                                  HorizontalContentAlignment="Center"  
                                                  Background="Gray" 
                                                  BorderBrush="Transparent"
                                                  ScrollViewer.HorizontalScrollBarVisibility="Auto" >
                                            <DataGrid.Columns>
                                                                                                  <DataGridTemplateColumn  >
                                                    <DataGridTemplateColumn.CellTemplate >
                                                        <DataTemplate>
                                                            <Image Source="{Binding PhotoSource}" Width="60" Height="60" />
                                                        </DataTemplate>
                                                    </DataGridTemplateColumn.CellTemplate>
                                                    <DataGridTemplateColumn.HeaderTemplate>
                                                        <DataTemplate>
                                                            <TextBlock Text="{Binding DataContext[10],RelativeSource={RelativeSource AncestorType=DataGrid}}" Width="60"/>
                                                        </DataTemplate>
                                                    </DataGridTemplateColumn.HeaderTemplate>
                                                </DataGridTemplateColumn>



                                                <DataGridTextColumn   Binding="{Binding FirstName}"  >
                                                    <DataGridTextColumn.HeaderTemplate>
                                                        <DataTemplate>
                                                            <TextBlock Text="{Binding DataContext[4],RelativeSource={RelativeSource AncestorType=DataGrid}}" Width="60"/>
                                                        </DataTemplate>
                                                    </DataGridTextColumn.HeaderTemplate>
                                                </DataGridTextColumn>....
最后创建一个用户列表(这是一个表示用户信息的类,例如firstname(string)//lastname(string)//……///PhotoSource(BitmapImage))并将其按如下方式馈送到数据网格

 UserListDataGrid.ItemsSource = convUsrList;
正如我所说的,除了用户图片,所有的东西都显示在数据网格上,你能帮我吗?

这是用户类:

public class User
    {
        public int Id { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
        public bool IsActive { get; set; }
        public int UserTypeId { get; set; }
        public int ShopId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string PhoneNumber { get; set; }
        public string CellNumber { get; set; }
        public string Address { get; set; }
        public string Email { get; set; }
        public bool Gender { get; set; }
        public string Photo { get; set; }
        public string SecurityAnswer { get; set; }
        public int SecurityQuestionId { get; set; }
        public long LastSecurityCheck { get; set; }
        public DateTime? DeletedAt { get; set; }
        public DateTime? ExpireDate { get; set; }
    }
    public class UserDatagrid:User
    {
        public BitmapImage PhotoSource;
    }
下面是convUsrList的声明:

public void loadUserTable()
    {
        UserManagement um = new UserManagement(db);
        List<User> userlist = um.getUserlist(um.GetUsers());

        if (db.IsRTL)
            UserListDataGrid.FlowDirection = FlowDirection.RightToLeft;
        else
            UserListDataGrid.FlowDirection = FlowDirection.LeftToRight;
        string s = "";
        dataBase.AppNotifyDic.TryGetValue("userTbl", out s);
        string[] contbl = s.Split('-');
        UserListDataGrid.DataContext = new List<string>() { contbl[0], contbl[1], contbl[2], contbl[3], contbl[4], contbl[5], contbl[6], contbl[7], contbl[8], contbl[9], contbl[10], contbl[11], contbl[12], contbl[13], contbl[14], contbl[15], contbl[16] };
        List<UserDatagrid> convUsrList = new List<UserDatagrid>();
        for (int i=0;i<userlist.Count;i++)
        {
            convUsrList.Add(tools.convertUserForDataGrid(userlist[i]));
        }
        UserListDataGrid.ItemsSource = convUsrList;

    }

因为绑定系统使用反射来查找

DataContext中的属性(即您的VM)

希望这会有所帮助


积分:

你能设置你的PhotoSource属性吗..你的意思是在convUsrList中?如果是,我确信它有用户BitMapImage的值。请在用户类中显示PhotoSource属性的声明,以及如何声明
convUsrList
。@Clemens Updated@AbhinavSharma Updated
public void loadUserTable()
    {
        UserManagement um = new UserManagement(db);
        List<User> userlist = um.getUserlist(um.GetUsers());

        if (db.IsRTL)
            UserListDataGrid.FlowDirection = FlowDirection.RightToLeft;
        else
            UserListDataGrid.FlowDirection = FlowDirection.LeftToRight;
        string s = "";
        dataBase.AppNotifyDic.TryGetValue("userTbl", out s);
        string[] contbl = s.Split('-');
        UserListDataGrid.DataContext = new List<string>() { contbl[0], contbl[1], contbl[2], contbl[3], contbl[4], contbl[5], contbl[6], contbl[7], contbl[8], contbl[9], contbl[10], contbl[11], contbl[12], contbl[13], contbl[14], contbl[15], contbl[16] };
        List<UserDatagrid> convUsrList = new List<UserDatagrid>();
        for (int i=0;i<userlist.Count;i++)
        {
            convUsrList.Add(tools.convertUserForDataGrid(userlist[i]));
        }
        UserListDataGrid.ItemsSource = convUsrList;

    }
 public static UserDatagrid convertUserForDataGrid(User origUser)
    {
        UserDatagrid convUser = new UserDatagrid();

        convUser.Id = origUser.Id;
        convUser.UserName = origUser.UserName;
        convUser.Password = origUser.Password;
        convUser.IsActive = origUser.IsActive;
        convUser.UserTypeId = origUser.UserTypeId;
        convUser.ShopId = origUser.ShopId;
        convUser.FirstName = origUser.FirstName;
        convUser.LastName = origUser.LastName;
        convUser.PhoneNumber = origUser.PhoneNumber;
        convUser.CellNumber = origUser.CellNumber;
        convUser.Address = origUser.Address;
        convUser.Email = origUser.Email;
        convUser.Gender = origUser.Gender;
        convUser.Photo = origUser.Photo;
        convUser.SecurityAnswer = origUser.SecurityAnswer;
        convUser.SecurityQuestionId = origUser.SecurityQuestionId;
        convUser.LastSecurityCheck = origUser.LastSecurityCheck;
        convUser.DeletedAt = origUser.DeletedAt;
        convUser.ExpireDate = origUser.ExpireDate;
        convUser.PhotoSource = (string.IsNullOrEmpty(origUser.Photo)) ? (convUser.Gender)? setImagesource("male.png"): setImagesource("Female.png") : getImage(origUser.Photo);
         return convUser;
    }