只有此按钮上的文字是可点击的:它的正文不是

时间:2013-03-29 21:31:54

标签: silverlight

我是Silverlight的新手,尝试使用嵌套的TextBlock创建一个Button,同时让它们都存在于Grid中。一切正常,只有文字是可点击的......

                    <Grid x:Name="ValueHeadingContainer" Grid.Column="0" Grid.Row="0" Grid.RowSpan="2">
                        <Border Background="Transparent" BorderThickness="0,0,1,1" BorderBrush="#000" />
                        <Button Click="Button_Click" Name="ValueHeadingButton">
                            <Button.Template>
                                <ControlTemplate>
                                    <TextBlock x:Name="ValueHeadingLabel" 
                                               Text="{Binding ValueLabel}" 
                                               Margin="10,0,0,0"
                                               Style="{StaticResource FakeColumnHeader}"/>
                                </ControlTemplate>
                            </Button.Template>
                        </Button>
                    </Grid>

2 个答案:

答案 0 :(得分:0)

如果你想要的只是一个按钮(不是模板),那就足够了:

<Button Click="Button_Click" Name="ValueHeadingButton">
                                    <TextBlock x:Name="ValueHeadingLabel" 
                                               Text="{Binding ValueLabel}" 
                                               Margin="10,0,0,0"
                                               Style="{StaticResource FakeColumnHeader}"/>
</Button>

即。你只需使用像<Button><TextBlock></TextBlock></Button>这样没有内容模板的smth。

答案 1 :(得分:0)

只有文本块可以单击,因为您尚未定义任何其他将处理鼠标事件的元素。您需要在文本块周围放置一个包装器,以增加按钮的可点击表面区域。

我还建议您将TextBlock上的IsHitTestVisible设置为false,以防止它干扰任何其他鼠标事件。

<Button.Template>
    <ControlTemplate>
        <Border Background="Transparent">
            <TextBlock x:Name="ValueHeadingLabel" 
                       IsHitTestVisible="False"
                       Text="{Binding ValueLabel}" 
                       Margin="10,0,0,0"
                       Style="{StaticResource FakeColumnHeader}"/>
        </Border>
    </ControlTemplate>
</Button.Template>