Click event on an item template

try set DataContext via binding to SelectedItem of ListBox

<DetailedView DataContext="{Binding Path=SelectedItem, ElementName=icTodoList, Mode=OneWay}"/>

or equivalent code

var binding = new Binding
{
    Path = new PropertyPath("SelectedItem"),
    ElementName = "icTodoList", 
    Mode = BindingMode.OneWay
};
BindingOperations.SetBinding(DetailedView, Control.DataContextProperty, binding);


another approach

ListBox has SelectionChanged event

<ListBox Name="icTodoList" 
            SelectionChanged="IcTodoList_OnSelectionChanged">

</ListBox>

event handler

private void IcTodoList_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    DetailedView.DataContext = icTodoList.SelectedItem;
    DetailedView.Visibility = System.Windows.Visibility.Visible;  
}

Tag values and TextBlock_MouseDown handler will be not necessary