2
我有我自己的TextBox2類派生自TextBox。我想添加一個名爲TextBlock的狀態,並且當IsTextBlock屬性/依賴項屬性爲true時,我希望VisualStateManager進入該狀態。如果這是真的,我想將文本框的樣式更改爲只讀,並且看起來就像是一個TextBlock,但能夠選擇要複製的文本。這可能嗎?有沒有更好的辦法?如何將狀態添加到Silverlight中的控件?
我有我自己的TextBox2類派生自TextBox。我想添加一個名爲TextBlock的狀態,並且當IsTextBlock屬性/依賴項屬性爲true時,我希望VisualStateManager進入該狀態。如果這是真的,我想將文本框的樣式更改爲只讀,並且看起來就像是一個TextBlock,但能夠選擇要複製的文本。這可能嗎?有沒有更好的辦法?如何將狀態添加到Silverlight中的控件?
類似的東西:
[TemplateVisualState(Name = "TextBlock", GroupName = "ControlType")]
[TemplateVisualState(Name = "TextBox", GroupName = "ControlType")]
public class TextBox2 : TextBox
{
public TextBox2()
{
DefaultStyleKey = typeof (TextBox2);
Loaded += (s, e) => UpdateVisualState(false);
}
private bool isTextBlock;
public bool IsTextBlock
{
get { return isTextBlock; }
set
{
isTextBlock = value;
UpdateVisualState(true);
}
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
UpdateVisualState(false);
}
internal void UpdateVisualState(bool useTransitions)
{
if (IsTextBlock)
{
VisualStateManager.GoToState(this, "TextBlock" , useTransitions);
}
else
{
VisualStateManager.GoToState(this, "TextBox" , useTransitions);
}
}
}
HTH