这是我的代码:
Button obj = sender as Button;
obj.Content = "fgfgfgfghhhhhhhhhhhhhpetko";
obj.Foreground = Brushes.White;
obj.Height = 20;
它位于MouseEntered事件中。当我将鼠标移到按钮上时,按钮会改变其高度,但它不会改变其内容。案文保持不变。为什么会这样?
这是按钮样式:
<Style x:Key="RoundCorner" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="grid" >
<Border x:Name="border" CornerRadius="8">
<Border.Background>
SlateBlue
</Border.Background>
</Border>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" >
<ContentPresenter.Content>
<StackPanel Orientation="Horizontal">
<Image Source="/Resources/test.png"></Image>
<TextBlock HorizontalAlignment="Right">
<TextBlock.Name>
petko
</TextBlock.Name>
</TextBlock>
</StackPanel>
</ContentPresenter.Content>
</ContentPresenter>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
以下是我如何使用它:
<Button MouseEnter="MouseEntered" Style="{StaticResource RoundCorner}" Name="btnHelp" Command="NavigationCommands.GoToPage" CommandParameter="ViewModel/MyPage.xaml" CommandTarget="{Binding ElementName=frmContent}" ></Button>
答案 0 :(得分:2)
当我使用您的模板时,为该按钮设置任何内容对我来说都不起作用(即使在XAML文件中硬编码)。我已经修改了您的模板,但没有覆盖ContentContainer.Content
内的ControlTemplate
,它现在似乎正常工作,并且在鼠标输入事件中更新。
<Style x:Key="RoundCorner" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="grid" >
<Border x:Name="border" CornerRadius="8">
<Border.Background>
SlateBlue
</Border.Background>
</Border>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal">
<Image Source="/Resources/test.png"></Image>
<ContentPresenter />
</StackPanel>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
如果这可以解决您的问题,请告诉我。
答案 1 :(得分:1)
您已对模板进行了硬编码,您必须使用模板绑定来更新此模板。
<Style x:Key="RoundCorner" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="grid" >
<Border x:Name="border" CornerRadius="8">
<Border.Background>
SlateBlue
</Border.Background>
</Border>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" >
<ContentPresenter.Content>
<StackPanel Orientation="Horizontal">
<Image Source="/Resources/test.png"></Image>
<TextBlock HorizontalAlignment="Right" Text="{TemplateBinding Content}">
</StackPanel>
</ContentPresenter.Content>
</ContentPresenter>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 2 :(得分:0)
问题是您在模板中设置了ContentPresenter.Content
。此属性绑定到按钮的实际内容。您应该为按钮设置此内容,而不是模板。