0

我对 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>
4

2 回答 2

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。

于 2013-03-29T21:44:12.160 回答
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>
于 2013-03-31T10:09:04.367 回答