【发布时间】:2016-07-18 09:24:46
【问题描述】:
我的应用程序中有TextBoxes 和FakeTextBoxes。 FakeTextBoxes 相当于 TextBoxes,但它们具有更多功能,因为它们具有按钮和/或内部图像。 XAML FakeTextBox 看起来像这样:
<Border BorderThickness="1">
<StackPanel Orientation="Horizontal">
<TextBox BorderThickness="0" />
<Button>I'm a button inside textbox</Button>
</StackPanel>
</Border>
TextBox 在我的项目中有一个自定义样式,它会根据其IsMouseOver 和GotFocus 属性更改其BorderBrush。通用风格来自 mahapps.metro,你可以在这里找到它:https://github.com/MahApps/MahApps.Metro/blob/develop/MahApps.Metro/Styles/Controls.TextBox.xaml
问题是我不能对FakeTextBox 的边框应用相同的行为。我希望在我的自定义 Border 上具有完全相同的行为,以便它看起来与其他 TextBoxes 完全相同。
我已经尝试过但对 Border 不起作用:
- 绑定到内部
TextBox的BorderBrush属性。 - 绑定到
TextBox的IsFocused属性:IsFocused 没有设置器。 - 创建一个隐藏的
TextBox并绑定到它的BorderBrush
是否有通用和/或简单的解决方案?
【问题讨论】:
-
是
FakeTextBox派生自TextBox?你也可以显示自定义 TextBox 样式吗? -
实际上并非如此。它只是视图/用户控件中的一段代码。这是 TextBox github.com/MahApps/MahApps.Metro/blob/develop/MahApps.Metro/… 的自定义样式。
-
你能给我们看看构成 FakeTextBox 的代码(xaml 也是)吗?
标签: wpf xaml binding styling mahapps.metro