>>Can anyone suggest that how to change the position of the ScrollViewer programmatically based on the SelectedItem?.
To meet your requirements, you can get the ScrollViewer object from the ListBox control firstly. And then invoke the ScrollViewer.ChangeView method to change the view as you want. The ChangeView method need parameters such as horizontalOffset and verticalOffset. You can get the previous position and calculate how much to scroll by the selected item. Then you can set the target position to the method to change the view.
For detail code you can reference: http://stackoverflow.com/questions/32557216/windows-10-scrollintoview-is-not-scrolling-to-the-items-in-the-middle-of-a-lis