2014-09-28 6 views
0

У меня есть 2 класса, созданных Entity Framework следующим образом. Мое требование зависит от SystemEntity_ID в классе JobEntity, я хочу связать свойство IsChecked этого флажка в списке. Проблема в том, прямо сейчас все флажки проверяются ... Пожалуйста, помогите ..wpf checkbox binding in listview

public partial class JobEntity 
{ 
    public int JobEntity_ID { get; set; } 
    public int Job_ID { get; set; } 
    public Nullable<int> SystemEntity_ID { get; set; } 
    public string EntityMigrationStatus { get; set; } 
} 

public partial class sp_SelectEntities_Result 
{ 
    public Nullable<int> Project_ID { get; set; } 
    public Nullable<int> Site_ID { get; set; } 
    public int SystemEntity_ID { get; set; } 
    public string EntityDesc { get; set; } 
} 

Ниже мой ViewModel класс:

public class EntityViewModel 
{ 
    private List<sp_SelectEntities_Result> entitylist; 
    private ObservableCollection<sp_SelectEntities_Result> _ObCollection; 
    private EntityDbContext db; 
    List<int> Selectedvalues = new List<int>(); 
    public EntityViewModel() 
    { 
     db = new EntityDbContext(); 
     entitylist = db.sp_SelectEntities().ToList(); 
     convert(); 
    } 

    public void convert() 
    { 
     _ObCollection = new ObservableCollection<sp_SelectEntities_Result>(entitylist); 
    } 

    public ObservableCollection<sp_SelectEntities_Result> obcollection 
    { 
     get { return _ObCollection; } 
     set { _ObCollection = value; } 
    } 

} 

мой взгляд, т.е. MainWindow.

<ListView x:Name="lstentities" ItemsSource="{Binding obcollection}" Height="250" VerticalAlignment="Top"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Selected"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox x:Name="chk" IsChecked="{Binding SystemEntity_ID}" /> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
      <GridViewColumn DisplayMemberBinding="{Binding EntityDesc}" Header="Entity" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

и в mainwindow.cs

public MainWindow() 
{ 
    InitializeComponent(); 

    EntityViewModel ev = new EntityViewModel(); 
    this.DataContext = ev; 
} 
+1

Вы хотите бинг int для свойства, которое является булевым? Это верно? – sexta13

+0

Что именно вы ожидаете вызвать флажок? Вы привязываете его к целому числу, я бы предположил, что поле будет проверяться, если целое число отличное от нуля. Если вы хотите, чтобы флажок был установлен на основе определенных значений, вам необходимо использовать преобразователь значений. –

+0

На самом деле давайте скажем, что в базе данных у нас 2,3,4, тогда я хочу отмечать 2, 3 и 4 флажка и по одной и той же строке, если любые проверенные изменения позволяют сказать, что пользователь снял флажок 2, затем я хочу сохранить 3,4 в базу данных. – nikhil

ответ

0

Проблема заключается в том, что вы пытаетесь связать обнуляемое Int к логическому свойству. Если вы этого хотите. Вам нужен конвертер или триггер данных.

Поскольку я не знаю, какое значение установит флажок, и какое значение сделает флажок снят, я могу написать любой код для вашего.

Надеюсь, это поможет.

С уважением

+0

Как раньше, если у меня есть 2,4 в базе данных, тогда необходимо проверить флажки 2 и 4, и если какие-либо изменения произойдут в представлении, мне нужно сохранить эти значения обратно в базу данных. .Пожалуйста, помогите..если мне нужен конвертер значений, можете ли вы помочь мне с кодом. Я так новичок в WPF. – nikhil