2012-07-04 2 views
2

У меня есть список .list box bind с привязкой dataset.listbox дает правильный результат. Я использовал флажок в списке для выбора, и это работает нормально, но проблема в том, что что когда я проверяю поле списка элементов и прокручиваю вниз по списку, и проверяет, что еще один элемент возвращается выше scrolldown, тогда см. какой-то элемент случайным образом автоматически не установлен. Я не хочу, чтобы элемент автоматически не отмечен. Пожалуйста, помогите мне. Я использую этот код ниже.выбор списка случайным образом не выбран какой-либо элемент при прокрутке списка в wpf

<DataTemplate x:Key="listBoxcontrycode"> 
    <StackPanel Margin="4"> 
     <DockPanel> 
      <CheckBox Name="chkcntrycode" Content="{Binding userisd}" 
         Checked="chkcntrycode_Checked" Unchecked="Unchkcntrycode_Checked" /> 
     </DockPanel> 
    </StackPanel> 

<ListBox Height="89" HorizontalAlignment="Left" ItemTemplate="{StaticResource listBoxcontrycode}" ItemsSource="{Binding Tables[0]}" Margin="160,0,0,6" 
     Name="listcntrycode" VerticalAlignment="Bottom" Width="86" Grid.Column="3" Grid.ColumnSpan="2" Grid.RowSpan="2"          
     OverridesDefaultStyle="False" SelectionMode="Extended" IsEnabled="True" Grid.Row="3" /> 

.

private void ListBoxBindingcntrycode() 
{ 
    DBConnection ob = new DBConnection(); 
    RMS_Dataobject.getConnectionString = System.Configuration.ConfigurationSettings.AppSettings["EDM_RDMServer"]; 
    string commandString = "use [" + cmbEDM.SelectedItem.ToString() + "] select userisd from ADS_Audit_Log"; 
    DataTable dt = new DataTable(); 
    dt = ob.ReturnDatatable(commandString); 
    DataSet ds = new DataSet(); 
    ds.Tables.Add(dt); 
    listcntrycode.DataContext = ds; 
} 

ответ

1

Попробуйте привязать IsChecked к булевской собственности. Прямо сейчас IsChecked не сохраняется нигде, поэтому, когда элемент перерабатывается, информация не сохраняется.

+0

Я принимаю ваше решение как сэр! Спасибо, спасли мои часы :) –

1

Наконец-то я нашел решение этой проблемы. Я просто использовал свойство IsChecked с двухсторонним режимом binding.i также добавил столбец, имя виртуального столбца. Column is ischecked, и я даю обновленный код ниже.

<DataTemplate x:Key="listBoxcontrycode">  <StackPanel Margin="4">   <DockPanel>    <CheckBox Name="chkcntrycode" Content="{Binding userisd}"      Checked="chkcntrycode_Checked" Unchecked="Unchkcntrycode_Checked" IsChecked="{Binding IsChecked, Mode=TwoWay} />   </DockPanel>  </StackPanel> <ListBox Height="89" HorizontalAlignment="Left" ItemTemplate="{StaticResource listBoxcontrycode}" ItemsSource="{Binding Tables[0]}" Margin="160,0,0,6"   Name="listcntrycode" VerticalAlignment="Bottom" Width="86" Grid.Column="3" Grid.ColumnSpan="2" Grid.RowSpan="2"             OverridesDefaultStyle="False" SelectionMode="Extended" IsEnabled="True"> 

    private void ListBoxBindingcntrycode() 
     { 
      DBConnection ob = new DBConnection(); 
      RMS_Dataobject.getConnectionString = System.Configuration.ConfigurationSettings.AppSettings["EDM_RDMServer"]; 
      string commandString = "use [" + cmbEDM.SelectedItem.ToString() + "] select distinct userisd ,CONVERT(bit,0) 'IsChecked' from ADS_Audit_Log order by CountryRMSCode"; 
      DataTable dt = new DataTable(); 
      dt = ob.ReturnDatatable(commandString); 
      DataSet ds = new DataSet(); 
      ds.Tables.Add(dt); 
      listcntrycode.DataContext = ds; 
     } 
+0

Как мой ответ за 14 часов до того, как «Попробуйте привязать IsChecked к логическому свойству». не ответ? – Paparazzi

Смежные вопросы