2017-12-14 20 views
0

WPF에서 사각형 텍스트 상자가 있고 이미 클릭 할 수있는 텍스트 상자 안에 버튼이 있습니다. 전체 사각형 텍스트 상자를 클릭 가능하게 만들어야 사용자가 단추 대신 텍스트 상자를 클릭하여 상호 작용할 수 있습니다.wpf- 전체 상자를 클릭 할 수있게 만들기

그렇게 할 수 있습니까?

<Grid Background="{StaticResource TinyGrayBrush}" Height="260" Width="530" Margin="10,10,10,10" > 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="120*"/> 
     <ColumnDefinition Width="140*"/> 
    </Grid.ColumnDefinitions> 

    <Grid Grid.Column="0"> 
     <Image x:Name="imgCard" Source="{StaticResource Exception-NoImageAvailable}" Stretch="Fill" /> 
     <Image x:Name="hotpickEn" Source="{StaticResource HotPickEn}" Height="20" Width="70" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,30,0,0" Visibility="Hidden" /> 
     <Image x:Name="hotpickCh" Source="{StaticResource HotPickCH}" Height="20" Width="70" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,30,0,0" Visibility="Hidden" /> 
    </Grid> 
    <Grid x:Name="gdEnglish" Visibility="Visible" Grid.Column="1"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="12*"/> 
      <RowDefinition Height="62*"/> 
      <RowDefinition Height="90*"/> 
      <RowDefinition Height="5*"/> 
      <RowDefinition Height="55*"/> 
      <RowDefinition Height="10*"/> 
     </Grid.RowDefinitions> 
     <Grid.Resources> 
      <Style TargetType="TextBlock"> 
       <Setter Property="Margin" Value="25,5,25,5"/> 
      </Style> 
     </Grid.Resources> 
     <TextBlock Grid.Row="1" x:Name="txtTitle" Text="SPARKLING SUNDAY BRUNCH BUFFET" FontSize="20" TextWrapping="Wrap" FontWeight="Medium" Foreground="{StaticResource SemiDarkGrayBrush}" Margin="5,0,5,6.5" /> 
     <TextBlock Grid.Row="2" x:Name="txtDesc" Text="Pop your Sunday Morning with luxury sparkling bubble" FontSize="16" TextWrapping="Wrap" Foreground="{StaticResource GrayBrush}" Margin="5,3.5,5,6.5" /> 
     <TextBlock Grid.Row="3" x:Name="txtPoint" Text="138,900 GP" FontSize="21" TextWrapping="Wrap" FontWeight="Medium" Foreground="{StaticResource GrayBrush}" Margin="25,3.5,25,6" /> 
     <Button Grid.Row="4" x:Name="btnFindOutMore" Content="FIND OUT MORE OR REDEEM" Style="{StaticResource SmallWhiteRedButton}" Margin="12,0,12,0" FontSize="20" /> 
    </Grid> 
    <Grid x:Name="gdChinese" Visibility="Hidden" Grid.Column="1"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="12*"/> 
      <RowDefinition Height="62*"/> 
      <RowDefinition Height="90*"/> 
      <RowDefinition Height="5*"/> 
      <RowDefinition Height="55*"/> 
      <RowDefinition Height="10*"/> 
     </Grid.RowDefinitions> 
     <Grid.Resources> 
      <Style TargetType="TextBlock"> 
       <Setter Property="Margin" Value="25,5,25,5"/> 
      </Style> 
     </Grid.Resources> 
     <TextBlock Grid.Row="1" x:Name="txtCHTitle" Text="SPARKLING SUNDAY BRUNCH BUFFET" FontSize="20" TextWrapping="Wrap" FontWeight="Medium" Foreground="{StaticResource SemiDarkGrayBrush}" HorizontalAlignment="Left" Margin="5,4.667,0,5.333" /> 
     <TextBlock Grid.Row="2" x:Name="txtCHDesc" Text="Pop your Sunday Morning with luxury sparkling bubble" FontSize="16" TextWrapping="Wrap" Foreground="{StaticResource GrayBrush}" HorizontalAlignment="Left" Margin="5,4.667,0,5.667" /> 
     <TextBlock Grid.Row="3" x:Name="txtCHPoint" Text="138,900 GP" FontSize="21" TextWrapping="Wrap" FontWeight="Medium" Foreground="{StaticResource GrayBrush}" HorizontalAlignment="Left" Margin="25,3.5,25,6" Width="105" /> 
     <Button x:Name="btnCHFindOutMore" Grid.Row="4" Content="FIND OUT MORE OR REDEEM" Style="{StaticResource SmallWhiteRedButton}" Margin="15,0,10,0"/> 
    </Grid> 
+0

당신은 사용자가 할 수있는 것을 을 원하는

private void gdEnglish_MouseLeave(object sender, MouseEventArgs e) { gdEnglish_clickflag = false; } private void gdEnglish_MouseUp(object sender, MouseButtonEventArgs e) { if (gdEnglish_clickflag) { gdEnglish_clickflag = false; e.Handled = true; ////////// // YOUR // // CODE // ////////// } } private void gdEnglish_MouseDown(object sender, MouseButtonEventArgs e) { gdEnglish_clickflag = true; } private void gdEnglish_TouchLeave(object sender, TouchEventArgs e) { gdEnglish_clickflag = false; } private void gdEnglish_TouchUp(object sender, TouchEventArgs e) { if (gdEnglish_clickflag) { gdEnglish_clickflag = false; e.Handled = true; ////////// // YOUR // // CODE // ////////// } } private void gdEnglish_TouchDown(object sender, TouchEventArgs e) { gdEnglish_clickflag = true; } 
아무 곳이나 클릭하고 버튼을 클릭하십시오. 이상하게 들리네 ... 아니면 버튼 테두리를 숨겨서 전체 그리드의 일부로 보이게하는거야? – X39

+0

나는 아무것도 숨기고 있지 않다. 예, 사용자는 단추 자체를 포함하여 텍스트 상자 안의 아무 곳이나 클릭 할 수 있습니다. 버튼 자체는 클릭 할 수 있지만 버튼 외부가 아닌, 즉 텍스트 상자의 나머지 부분입니다. –

+0

하지만 텍스트 상자가 없기 때문에 사용자는 그리드 안쪽을 아무 곳이나 클릭 할 수 있으며 버튼을 클릭 한 것처럼 나타나야합니다. 대답해야 할 다른 질문 : 버튼 작동 방법 코드 숨김 또는이 XAML에 아직없는 바인딩? – X39

답변

1

것은이에 대한 코드 숨김 사용하는 것처럼 : 당신은 기본적으로 너무

gdEnglish.TouchDown += gdEnglish_TouchDown; 
gdEnglish.TouchUp += gdEnglish_TouchUp; 
gdEnglish.TouchLeave += gdEnglish_TouchLeave; 
gdEnglish.MouseDown += gdEnglish_MouseDown; 
gdEnglish.MouseUp += gdEnglish_MouseUp; 
gdEnglish.MouseLeave += gdEnglish_MouseLeave; 

새로운 추가 그리드의 이벤트에 가입

여기

내 XAML입니다 현재 상태를 나타내는 전용 변수

private bool gdEnglish_clickflag = false; 

만들고 다른 이벤트 핸들러

는 나는 아직도이 더 깨끗하고 쉽게 같은 일을 할 것입니다 WPF

당신이 주제 MVVM을 연구하는 것이

추천하고 싶은

+0

당신은 noooooo –

+0

당신의 솔루션이 작동하지 않았다 왼쪽으로 btw –