Получить статус списка флажок в WPF - PullRequest
0 голосов
/ 04 августа 2011

У меня есть вид списка, который содержит флажки.Как я могу получить информацию, если она отмечена или нет?

XAML:

 <ListView Name="listview1" ItemsSource="{Binding UserCollection}">
     <ListView.View>
         <GridView>
             <GridViewColumn  Header="Discription" Width="170">
                 <GridViewColumn.CellTemplate>
                     <DataTemplate>
                         <TextBlock Text="{Binding Path=Discription}" Width="Auto"/>
                     </DataTemplate>
                 </GridViewColumn.CellTemplate>
             </GridViewColumn>
             <GridViewColumn  Header="Value" >
                 <GridViewColumn.CellTemplate>
                     <DataTemplate>
                         <StackPanel>
                             <CheckBox IsChecked="{Binding Path=Value}" Content="{Binding Path=Value}" Width="70" Name="ckBox1"/>
                         </StackPanel>
                     </DataTemplate>
                 </GridViewColumn.CellTemplate>
             </GridViewColumn>
         </GridView>
     </ListView.View>
 </ListView>

ИЛИ возможно ли это, когда пользователь снимает или проверяет флажки «Значение» в коллекции изменено?

ObservableCollection<UserData> _UserCollection = new ObservableCollection<UserData>();
public ObservableCollection<UserData> UserCollection
{
    get { return _UserCollection; }
}

public class UserData
{
    public string Discription { get; set; }
    public bool Value { get; set; }
}

Ответы [ 2 ]

1 голос
/ 04 августа 2011

ObservableCollection просто вызывает события, когда изменяется содержимое коллекции, а не когда изменяется свойство одного из ваших классов UserData.Возможно, вы захотите сделать так, чтобы UserData реализовал INotifyPropertyChanged.Таким образом, вы можете программно установить свойство Value, и флажок привязки пользовательского интерфейса будет автоматически установлен / снят соответствующим образом.

    public class UserData : INotifyPropertyChanged
    {
       private bool m_value;

       public bool Value
       {
          get { return m_value; }
          set
          {
             if (m_value == value)
                return;
             m_value = value;
             if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs("Value"));
          }
       }

       public event PropertyChangedEventHandler PropertyChanged;
   }
1 голос
/ 04 августа 2011

У вас должны быть UserData , чтобы реализовать INotifyPropertyChanged , а затем уведомить свойство Value при его обновлении.Ваши привязки не будут работать должным образом, если вы не выполните эти два шага.После того, как вы сделали эти две вещи, экземпляр UserData будет содержать значение флажка.

public class UserData : INotifyPropertyChanged
{
    /* Sample code : missing the implentation for INotifyProperty changed */

    private bool Value = true;

    public bool Value
    {
        get{ return _value;}
        set{ _value= value;
             RaiseNotification("Value");
        };
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...