TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
hussain baig
NA
75
0
Selected items of listview checkbox in MVVM WPF
Feb 27 2013 12:58 AM
I want to pass selected items of listview checkbox in view model, later I will use further process to store in database.
Code in the FormWeek.xaml as
<Window.DataContext>
<Binding
Source
=
"{StaticResource Locator}"
Path
=
"TaskExecDefModel"
>
</Binding>
</Window.DataContext>
<Window.Resources>
<ResourceDictionary>
<DataTemplate
x:Key
=
"ItemDataTemplate"
>
<CheckBox
x:Name
=
"checkbox"
Content
=
"{Binding}"
Command
=
"{Binding CheckBoxCommand}"
CommandParameter
=
"{Binding ElementName=checkedListView, Path=SelectedItems}"
IsChecked
=
"{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}"
/>
</DataTemplate>
</ResourceDictionary>
<StackPanel
Grid
.
Column
=
"1"
Grid
.
Row
=
"3"
Margin
=
"5"
>
<CheckBox
x:Name
=
"selectAll"
Content
=
"Select all"
Click
=
"OnSelectAllChanged"
/>
<ListView
x:Name
=
"checkedListView"
SelectionMode
=
"Multiple"
ItemsSource
=
"{Binding CollectionOfDays}"
DataContext
=
"{Binding}"
ItemTemplate
=
"{StaticResource ItemDataTemplate}"
SelectedValue
=
"WorkingDay"
CheckBox
.
Unchecked
=
"OnUncheckItem"
SelectionChanged
=
"SelectDays"
SelectedItem
=
"{Binding SelectedItems}"
>
</ListView>
</StackPanel>
Code in FormWeek.xaml.cs
private void SelectDays(object sender, SelectionChangedEventArgs e)
{
(this.DataContext as TaskExecDefinitionViewModel).OnCheckBoxCommand(checkedListView.SelectedItems,true);
}
My View Model TaskWeek.cs as follows
//Declaration
private RelayCommand
<object>
_checkBoxCommand;
public ObservableCollection
<string>
CollectionOfDays
{ get; set; }
public ObservableCollection
<string>
SelectedItems
{ get; set; }
public RelayCommand
<object>
CheckBoxCommand
{
get
{
if (_checkBoxCommand == null)
{
_checkBoxCommand = new RelayCommand
<object>
((args) => OnCheckBoxCommand(args,true));
// _checkBoxCommand = new RelayCommand(() => OnCheckBoxCommand(object args));
} return _checkBoxCommand;
}
}
//Constructor
CollectionOfDays = new ObservableCollection
<string>
();
//Method
private void GetWeekDays()
{
try
{
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { CollectionOfDays.Add("Saturday");
CollectionOfDays.Add("Sunday");
CollectionOfDays.Add("Monday");
CollectionOfDays.Add("Tuesday");
CollectionOfDays.Add("Wednesday");
CollectionOfDays.Add("Thursday");
CollectionOfDays.Add("Friday"); }));
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message, "TaskWeek:GetWeekDays");
}
}
public void OnCheckBoxCommand(object obj, bool _direction)
{
try
{
if (SelectedItems == null)
SelectedItems = new ObservableCollection
<string>
();
if (obj != null)
{
SelectedItems.Clear();
StringBuilder items = new StringBuilder();
if (_direction)
{
foreach (string item in CollectionOfDays)
{
items.AppendFormat(item + ",");
}
}
MessageBox.Show(items.ToString());
}
else
SelectedItems.Clear();
}
catch (Exception ex)
{ MessageBox.Show(ex.Message, "TaskDefinition:OnCheckBoxCommand");
}
}
And below is button click commond to save the data.
<Button
Grid
.
Column
=
"2"
Grid
.
Row
=
"2"
Content
=
"Save"
HorizontalAlignment
=
"Center"
VerticalAlignment
=
"Bottom"
Command
=
"{Binding InsertExecDefCommand}"
Margin
=
"5"
>
Now my requirement is to pass selected listview items to view model through command object. I had done this using following code in FormWeek.xam.cs through SelectionChanged event as
private void OnSelectedItems(object sender, RoutedEventArgs e)
{
StringBuilder items = new StringBuilder();
foreach (string item in checkedListView.SelectedItems)
{
items.AppendFormat(item + ",");
}
string AllDays= items.ToString();
}
But please let me know how to achieve this logic through MVVM. How to get selecteditems in my view model TaskWeek.cs
After R&D and google i had done chages through RelayCommand. In OnCheckBoxCommand method foreach statement is wrong it is passing all days. I want to pass only selected listview item. Please suggest me what is wrong in OnCheckBoxCommand method.
Reply
Answers (
1
)
Binding SelectedItem of a Inner ListBox
WPF inkCanvas Paint Application