Требуется с помощью Grid и StackPanel создать форму, состоящую из трех TextBlock'ов.
Создать события MouseLeftButtonDown для «textBlock'ов», StackPanel, Грида(Grid) и окна(Window).
При клике на «textblock 1» с помощью пузырькового события на месте TextBlock должно выводиться «textblock1 + stackpanel + grid». При нажатии на «textBlock 2» - только «textblock2 + grid + window». Работает правильно только «textblock 1», а при на нажатии на «textBlock 2» выдает «textblock2 + stackpanel + grid + window». Как сделать, чтобы выводило только «textblock2 + grid + window»?
Title="MainWindow" Height="350" Width="525" MouseLeftButtonDown="Window_MouseLeftButtonDown">
<Grid MouseLeftButtonDown="Grid_MouseLeftButtonDown">
<StackPanel x:Name="st1" MouseLeftButtonDown="st1_MouseLeftButtonDown">
<Grid Height="320">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Column="1" Grid.Row="0"
Text="TextBlock" x:Name="tbResult"/>
<TextBlock Grid.Column="0" Grid.Row="2"
Text="textBlock 1" x:Name="tb1" MouseLeftButtonDown="tb1_MouseLeftButtonDown"/>
<TextBlock Grid.Column="2" Grid.Row="2"
Text="textBlock 2" x:Name="tb2" MouseLeftButtonDown="tb2_MouseLeftButtonDown"/>
</Grid>
</StackPanel>
</Grid>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
tbResult.Text += " + window";
}
private void st1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
tbResult.Text += " + stackpanel";
}
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
tbResult.Text += " + grid";
if(((TextBlock)e.OriginalSource).Name == "tb1")
{
e.Handled = true;
}
}
private void tb1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
tbResult.Text = "textBlock1";
}
private void tb2_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
tbResult.Text = "textBlock2";
}
}
}