gpt4 book ai didi

silverlight - 您可以在 Silverlight 中仅覆盖控件模板的一部分吗

转载 作者:行者123 更新时间:2023-12-04 14:53:14 26 4
gpt4 key购买 nike

是否可以更改或修改控件模板的特定部分,而无需在 xaml 中重新创建控件的整个控件模板?

例如,我试图摆脱文本框的边框,所以我可以将一个带有圆角的基本搜索框放在一起(下面的示例 xaml)。将 borderthickness 设置为 0 工作正常,直到您将鼠标悬停在文本框上,并且他们添加到控件的伪边框闪烁为止。如果我查看文本框的控制模板,我什至可以看到视觉状态已命名,但想不出如何禁用它。

在不覆盖 TextBox 的控件模板的情况下,如何停止 Visual State Manager 在 TextBox 上触发鼠标悬停效果?

<Border Background="White" CornerRadius="10" VerticalAlignment="Center" HorizontalAlignment="Center" BorderThickness="3" BorderBrush="#88000000">
<Grid VerticalAlignment="Center" HorizontalAlignment="Center" Width="200" Margin="5,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="16" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Path Height="13" Width="14" Stretch="Fill" Stroke="#FF000000" StrokeThickness="2" Data="M9.5,5 C9.5,7.4852815 7.4852815,9.5 5,9.5 C2.5147185,9.5 0.5,7.4852815 0.5,5 C0.5,2.5147185 2.5147185,0.5 5,0.5 C7.4852815,0.5 9.5,2.5147185 9.5,5 z M8.5,8.4999971 L13.5,12.499997" />
<TextBox GotFocus="TextBox_GotFocus" Background="Transparent" Grid.Column="1" BorderThickness="0" Text="I am searchtext" Margin="5,0,5,0" HorizontalAlignment="Stretch" />
</Grid>
</Border>

最佳答案

我找到了一种方法,通过继承控件并覆盖 OnApplyTemplate。这并不理想,但我认为这比必须复制整个控件模板要好。这是创建无边框文本框的示例,本质上是通过始终清除 Storyboard来禁用鼠标悬停在视觉状态上:

using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Animation;

namespace SilverlightTestApplication
{
public class BorderlessTextBox : TextBox
{
public BorderlessTextBox()
{
BorderThickness = new System.Windows.Thickness(0);
}

public override void OnApplyTemplate()
{
base.OnApplyTemplate();

//Get the mouse over animation in the control template
var MouseOverVisualState = GetTemplateChild("MouseOver") as VisualState;

if (MouseOverVisualState == null)
return;

//get rid of the storyboard it uses, so the mouse over does nothing
MouseOverVisualState.Storyboard = null;
}
}
}

关于silverlight - 您可以在 Silverlight 中仅覆盖控件模板的一部分吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/782251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com