如何在WPAM中以XAML格式(可视化树)获取现有控件的controltemplate?这有助于在现有模板的帮助下创建新的controltemplate.
我需要使密码框在 wpf 中不可编辑。我使用
IsEnabled = false
但这影响了我的风格,因此产生了一些模糊效果......还有其他方法可以实现这一点吗?
这似乎是一件简单的事情:使用TextBox显示一些输出并允许用户从中剪切和粘贴,滚动但不编辑它.
但是:如果TextBox是只读的,那么它会失去大部分键盘行为.您可以单击它并使用不可见光标选择文本,但不会滚动或导航.
我有这个(可怕的)解决方案.
<TextBox Focusable="True"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto"
FontFamily="Consolas" FontSize="10pt"
Foreground="{Binding Path=OutputTextColour}"
Text="{Binding Path=OutputText}"
Background="White" PreviewKeyDown="TextBox_PreviewKeyDown" />
Run Code Online (Sandbox Code Playgroud)
以及丢弃任何编辑尝试的处理程序:
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e) {
// the IsReadOnly flag on the control doesn't let the navigation keys work! WPF BUG?
if (!(e.Key == Key.Down || e.Key == Key.Up || e.Key == Key.Left || e.Key == Key.Right
|| e.Key == Key.Home || e.Key == Key.End || e.Key == Key.PageDown || e.Key == Key.PageUp
|| e.Key == Key.Tab || e.Key == Key.Escape))
e.Handled …Run Code Online (Sandbox Code Playgroud)