Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
30
MessageBox Displayed when one Checkbox is checked within ListView
posted

I have a ListView with several checkboxes contained that are loaded from a database. For just one of these checkboxes, I'd like to have a messagebox display when it is checked. I will then capture the answer to that question as data.

I would think I need to use a ListView.SelectedItem in the code-behind but this displays the messagebox only when the pertinent checkbox is the only box checked. I can get it so that the messagebox is displayed, but only if that checkbox is the only box checked. Also, the message will continue to display if I leave that box checked and check/uncheck other boxes. I don't want this. I need it to display only at the moment it's checked regardless of how many other boxes are checked.

So I changed it to .SelectedItems but this isn't working either. My current attempt is as follows:

XAML: 

<Grid>
	<ScrollViewer>
		<StackPanel Orientation="Vertical"><Label Content="STATS" />
			<ListView x:Name="lstStats" ItemsSource="{Binding Stats}" MaxWidth="684" MinHeight="25" Margin="0" BorderThickness="0">
				<ListView.ItemsPanel>
					<ItemsPanelTemplate>
						<WrapPanel Orientation="Horizontal" MaxWidth="650" />
					</ItemsPanelTemplate>
				</ListView.ItemsPanel>
				<ListView.ItemTemplate>
					<DataTemplate>
						<StackPanel Orientation="Vertical"  VerticalAlignment="Top">
							<StackPanel Orientation="Horizontal"  Grid.Column="1" VerticalAlignment="Top">
								<CheckBox x:Name="chkBox" IsChecked="{Binding RelativeSource={RelativeSource AncestorType=ListViewItem}, Path=IsSelected, Mode=OneWayToSource}" Margin="0,5,2,0" Content="{Binding Name}" />
							</StackPanel>
						</StackPanel>
					</DataTemplate>
				</ListView.ItemTemplate>
			</ListView>
		</StackPanel>
	</ScrollViewer>
</Grid>

Code-Behind:

Public Sub IsSelected(sender As Object, e As RoutedEventArgs) Handles lstStats.SelectionChanged
	Try
		Dim chkStats = New ObservableCollection(Of StatInfo)
		For Each item In lstStats.SelectedItems
			Dim selectItem As StatInfo = CType(item, StatInfo)
			If selectItem.Description = "Item Description to display MessageBox" Then
				Dim ask As MsgBoxResult = MsgBox("MessageBox text", MsgBoxStyle.YesNoCancel)
				If ask = MsgBoxResult.Yes Then
					sexCrimeStat.Stats.Add(New StatInfo With {.IsSelected = True, .Name = "Foobar", .Id = 25, .Description = "Item Description to display MessageBox", .Code = "Foo"})
					gotStat = True
				ElseIf ask = MsgBoxResult.No Then
	    			Exit For
				ElseIf ask = MsgBoxResult.Cancel Then
	    			Exit For
				End If
			End If
		Next
	Catch ex As Exception
		MessageBox.Show(ex.Message())
	End Try
End Sub

ViewModel:

Me.Stats = New ObservableCollection(Of StatInfo)() ' Load stats.
BindingOperations.EnableCollectionSynchronization(Stats, _statLock)
Dim tStats = DirectCast(App.Current, App).Db.GetStatItemsAsync.Result
If Not tStats Is Nothing Then
	For Each item In tStats
		If item.Active Then
			Me.Stats.Add(New StatInfo With {.IsSelected = False, .Name = item.Stat, .Id = item.Id, .Description = item.Description, .Code = item.AttributeCode})
		End If
	Next
End If

Parents
No Data
Reply
  • 2680
    Offline posted

    Hello Luke,

    Please, note that the WPF ListView control is a general WPF one coming from the System.Windows.Controls namespace. Hence, I am afraid the current question is not related to any Infragistics components and would thus qualify as out of the scope of Infragistics Developer Support.

    In case your app uses some of the Ultimate UI for WPF components and you need assistance with any aspect of their usage, we will be happy to assist you.

    Please, do make sure to post WPF-related queries in the dedicated Ultimate UI for WPF forum here, as I am under the impression this would be the target platform. Thank you for understanding.

    Best regards,
    Bozhidara Pachilova
    Associate Software Developer

Children