2017-12-14 9 views
0

私はWPFに矩形のテキストボックスを持っており、クリック可能なテキストボックスの中にすでにボタンがあります。私は矩形のテキストボックス全体をクリック可能にする必要があるため、ユーザーはボタンだけでなく、テキストボックス内のどこでもクリックすることができます。wpf-ボックス全体をクリック可能にする

これは可能ですか?ここで

は私のXAMLです:

<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

簡単になりますWPF

で話題のMVVMを研究することをお勧めしますしたいですボタンをクリックしてボタンをクリックしますか?それは私にとって奇妙に聞こえる...またはそれはあなたがグリッド全体の一部であるように見えるようにボタンの枠線などを隠していますか? – 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; 

すぎグリッドのイベントにサブスクライブ現在の状態を示すプライベート変数

private bool gdEnglish_clickflag = false; 

と異なるイベントハンドラに

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; 
} 

を作成し、私はまだあなたがそれをユーザーができることをしたい、このようなものは、よりクリーンで

+0

あなたは解決策がうまくいかなかった –

+0

を残しましたbtw –

関連する問題