I created a DataTemplate containing: A TextBlock and a Slider (x:Name="_score") in a horizontal stackpanel. The TextBlock refers to a new ObservableCollection, where class Category contains a string that is the TextBlock text. A ListView with 7 items uses the DataTemplate, so there are 7 sliders in the window.
Every time I change the value of the Slider _score, I want to update a TextBlock with the total sum of all the Slider's values. Different sliders will have different values selected by the user. I have an event handler for ValueChanged="_slidScore."
Can I differentiate the sliders from one another to add a total value for each slider?
<Page.Resources>
<!-- TODO: Delete this line if the key AppName is declared in App.xaml -->
<x:String x:Key="AppName">Questionnaire</x:String>
<DataTemplate x:Key="_itemTemplate">
<Border BorderBrush="Gainsboro" BorderThickness="4">
<StackPanel Orientation="Horizontal">
<TextBlock Margin="8,0,8,0" FontSize="18" Width="200" VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding crit}"/>
<StackPanel>
<Slider Margin="10,0,10,0" VerticalAlignment="Center" Value="0" Maximum="5" Minimum="0" TickFrequency="1" TickPlacement="Outside" x:Name="_score" Width="641" ValueChanged="_slidScore"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<TextBlock VerticalAlignment="Center" Text="Rating: " FontSize="24"/>
<TextBlock VerticalAlignment="Center" Margin="10,0,0,0" Text="{Binding Value, ElementName=_score}" FontSize="24"/>
</StackPanel>
</StackPanel>
</StackPanel>
</Border>
</DataTemplate>
</Page.Resources>
....
in the main grid:
<Border Grid.Row="1" BorderBrush="Red" BorderThickness="5">
<TextBlock Text="how often have you..." TextWrapping="Wrap" FontWeight="Bold" FontSize="20" VerticalAlignment="Center"/>
</Border>
<ListView x:Name="_listView" Grid.Row="2" ItemTemplate="{StaticResource _itemTemplate}" SelectionMode="None" HorizontalContentAlignment="Stretch"/>
<TextBlock Grid.Row="2" Grid.Column="1" x:Name="_result" FontSize="70"/>
...
in codebehind file
//list to populate the TextBlock in DataTemplate
_listView.ItemsSource = new ObservableCollection<Category>
{
new Category{crit = "1231231231231231231?"},
new Category{crit = "asdfafhadgfjargfjagj?"},
new Category{crit = "qerklhjyahkildfjkladnhjkla?"},
new Category{crit = "13490p76812390-qhjsedhjklg?"},
new Category{crit = "asdfasdgq3e45uq345u?"},
new Category{crit = "q3490u8yq38945yasdjiofhj?"},
new Category{crit = "13406923789045whjioerghjkla?"}
};
class Category
{
public string crit { get; set; }
}
Categoryclass. You could then sum up those values, and display the total it in the "total" text block. - dlev