Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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# 当我使用实体框架更改对象时,为什么ListView没有更改?_C#_Entity Framework_Listview_Mvvm_Data Binding - Fatal编程技术网

C# 当我使用实体框架更改对象时,为什么ListView没有更改?

C# 当我使用实体框架更改对象时,为什么ListView没有更改?,c#,entity-framework,listview,mvvm,data-binding,C#,Entity Framework,Listview,Mvvm,Data Binding,我有两个具有一对多关系的相关对象。当更改其中一个项目的值时,我看到observablecollection中的值已更改,但ListView中没有任何更改。添加和删除对ListView的更改时,将显示。 第一款: public partial class device_categories { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMet

我有两个具有一对多关系的相关对象。当更改其中一个项目的值时,我看到observablecollection中的值已更改,但ListView中没有任何更改。添加和删除对ListView的更改时,将显示。 第一款:

public partial class device_categories
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public device_categories()
    {
        this.devices = new HashSet<device>();
    }

    public int device_category_id { get; set; }
    public string category_name { get; set; }
    public int device_complexity_id { get; set; }

    public virtual device_complexities device_complexities { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<device> devices { get; set; }
}
公共部分类设备\u类别
{
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,“CA2214:DoNotCallOverridableMethodsInConstructors”)]
公共设备类别()
{
this.devices=new HashSet();
}
公共int设备\u类别\u id{get;set;}
公共字符串类别\u名称{get;set;}
公共int设备\u复杂性\u id{get;set;}
公共虚拟设备\u复杂性设备\u复杂性{get;set;}
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,“CA2227:CollectionPropertiesShouldBreadOnly”)]
公共虚拟ICollection设备{get;set;}
}
第二种模式:

public partial class device_complexities
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public device_complexities()
    {
        this.device_categories = new HashSet<device_categories>();
    }

    public int device_complexity_id { get; set; }
    public string device_complexity_name { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<device_categories> device_categories { get; set; }
}
公共部分类设备\u复杂性
{
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,“CA2214:DoNotCallOverridableMethodsInConstructors”)]
公共设备的复杂性()
{
this.device_categories=new HashSet();
}
公共int设备\u复杂性\u id{get;set;}
公共字符串设备\u复杂性\u名称{get;set;}
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,“CA2227:CollectionPropertiesShouldBreadOnly”)]
公共虚拟ICollection设备\u类别{get;set;}
}
视图模型:

class DeviceCategoriesViewModel
{
    newtechd dc = new newtechd();
    public DeviceCategoriesViewModel()
    {
        dc.device_categories.Include(com => com.device_complexities).Load();
        dc.device_complexities.Load();
        DeviceCategories = dc.device_categories.Local;
        DeviceComplexities = dc.device_complexities.Local;
    }
    // Create Collection of DeviceCategories
    private ObservableCollection<device_categories> deviceCategories;
    public ObservableCollection<device_categories> DeviceCategories
    {
        get
        {
            return deviceCategories;
        }

        set
        {
            deviceCategories = value;
        }
    }
    // Create Collection of Device Complexity (used in comboBox)
    private ObservableCollection<device_complexities> deviceComplexities;
    public ObservableCollection<device_complexities> DeviceComplexities
    {
        get
        {
            return deviceComplexities;
        }

        set
        {
            deviceComplexities = value;
        }
    }

    private device_complexities selectedDeviceComplexity;
    public device_complexities SelectedDeviceComplexity
    {
        get
        {
            return selectedDeviceComplexity;
        }

        set
        {
            selectedDeviceComplexity = value;
        }
    }

    private device_categories selectedDeviceCategory;
    public device_categories SelectedDeviceСategory
    {
        get
        {
            return selectedDeviceCategory;
        }

        set
        {
            selectedDeviceCategory = value;
        }
    }
    //Insert new Item
    public void AddDevCat(string name)
    {
        string addName = (String)name;

        device_categories add_Device_Categories = new device_categories
        {
            category_name = addName,
            device_complexity_id = selectedDeviceComplexity.device_complexity_id
        };
        dc.device_categories.Add(add_Device_Categories);
        dc.SaveChanges();
    }
    // Modify Item (I think problem somewhere here)
    public void EditDevCat(string newName, int comp_id)
    {
        string newCatName = (String)newName;
        int dev_comp_id = Convert.ToInt32(comp_id);

        device_categories dev_cat_to_edit = selectedDeviceCategory;
        device_complexities new_dev_comp = dc.device_complexities.Find(dev_comp_id);
        dev_cat_to_edit.category_name = newCatName;
        dev_cat_to_edit.device_complexities = new_dev_comp;
        dc.Entry(dev_cat_to_edit).State = EntityState.Modified;
        dc.SaveChanges();
    }
}
class DeviceCategories视图模型
{
newtechd dc=新的newtechd();
公共设备类别视图模型()
{
dc.device_categories.Include(com=>com.device_complexities.Load();
dc.device_complexities.Load();
DeviceCategories=dc.device\u categories.Local;
DeviceComplexities=dc.device\u complexities.Local;
}
//创建设备类别的集合
私人可观测采集设备类别;
公共可观测采集设备类别
{
得到
{
返回装置类别;
}
设置
{
设备类别=值;
}
}
//创建设备复杂性集合(在组合框中使用)
私有可观测采集设备复杂性;
公共可观测采集设备复杂性
{
得到
{
返回设备复杂性;
}
设置
{
设备复杂性=值;
}
}
专用设备\u选择的复杂性设备复杂性;
公共设备\u选择的复杂性设备复杂性
{
得到
{
返回所选设备的复杂性;
}
设置
{
selectedDeviceComplexity=值;
}
}
选择的专用设备类别设备类别;
选择的公共设备类别设备С类别
{
得到
{
返回所选设备类别;
}
设置
{
selectedDeviceCategory=值;
}
}
//插入新项目
public void AddDevCat(字符串名称)
{
字符串addName=(字符串)名称;
设备类别添加设备类别=新设备类别
{
类别名称=地址名称,
设备复杂性\u id=所选设备复杂性。设备复杂性\u id
};
dc.device\u categories.Add(添加设备\u categories);
dc.SaveChanges();
}
//修改项目(我认为这里有问题)
public void EditDevCat(字符串newName,int comp_id)
{
字符串newCatName=(字符串)newName;
int dev_comp_id=Convert.ToInt32(comp_id);
设备类别开发目录编辑=所选设备类别;
设备复杂度新建设备复杂度=dc.device复杂度.Find(设备复杂度id);
dev_cat_to_edit.category_name=newCatName;
dev_cat_to_edit.device_complexities=new_dev_comp;
dc.Entry(dev_cat_to_edit).State=EntityState.Modified;
dc.SaveChanges();
}
}
XAML


单击“更改”按钮后,我在ComboBox和TextBox中看到了更改
我相信这是这条线的复制品。简短的版本是您的设备\u复杂性类需要实现IPropertyChanged

<ListView x:Name="deviceCategoriesLV" HorizontalAlignment="Right" MaxHeight="200" MinHeight="150"  Margin="0,15,411.6,0" Grid.Column="0" ItemsSource="{Binding DeviceCategories}" SelectedItem="{Binding SelectedDeviceСategory}" VerticalAlignment="Top" Width="372" Height="226">
        <ListBox.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Удалить" x:Name="deleteDeviceCategory" Click="DeleteDeviceCategory_Click"/>
            </ContextMenu>
        </ListBox.ContextMenu>
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Margin="5">
                    <TextBlock FontSize="14" Text="{Binding Path=category_name}" />
                    <TextBlock Text="{Binding Path=device_complexities.device_complexity_name}" />
                    <!--<TextBlock FontSize="18" Text="{Binding Path=Brand_name}" />-->
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>