文本框在浮出控件、UWP 商店应用程序中变为只读
Posted
技术标签:
【中文标题】文本框在浮出控件、UWP 商店应用程序中变为只读【英文标题】:Textbox is becoming readonly in flyout, UWP store app 【发布时间】:2017-02-21 06:33:54 【问题描述】:在按钮弹出中,我使用了一个用户控件,里面有文本框。运行应用程序时,文本框显示为只读,不知道我为什么会遇到这个问题。我没有设置只读。
<TextBox Margin="2" Height="32"
MaxHeight="60"
TextWrapping="Wrap"
HorizontalAlignment="Stretch"
TextAlignment="Left"
Text="ramesh"
Style="x:Null"/>
【问题讨论】:
***.com/questions/39096758/… 您的代码在我这边运行良好。你如何实现弹出?您能否分享一个可以重现您的问题的minimal reproducible example? 【参考方案1】:找出是因为周年更新引起的问题。
https://blogs.msdn.microsoft.com/wsdevsol/2016/09/14/combobox-from-an-appbarbutton-loses-mouse-input-on-1607/
我为上述链接中给出的解决方案创建了附加属性。以下是附加属性
public class CompatExtensions
public static bool GetAllowFocusOnInteraction(DependencyObject obj)
return (bool)obj.GetValue(AllowFocusOnInteractionProperty);
public static void SetAllowFocusOnInteraction(DependencyObject obj, bool value)
obj.SetValue(AllowFocusOnInteractionProperty, value);
// Using a DependencyProperty as the backing store for AllowFocusOnInteraction.
// This enables animation, styling, binding, etc...
public static readonly DependencyProperty AllowFocusOnInteractionProperty =
DependencyProperty.RegisterAttached("AllowFocusOnInteraction",
typeof(bool),
typeof(CompatExtensions),
new PropertyMetadata(0, AllowFocusOnInteractionChanged));
private static bool allowFocusOnInteractionAvailable =
Windows.Foundation.Metadata.ApiInformation.IsPropertyPresent(
"Windows.UI.Xaml.FrameworkElement",
"AllowFocusOnInteraction");
private static void AllowFocusOnInteractionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
if (allowFocusOnInteractionAvailable)
var element = d as FrameworkElement;
if (element != null)
element.AllowFocusOnInteraction = (bool)e.NewValue;
还有一个例子:
<AppBarButton local:CompatExtensions.AllowFocusOnInteraction="True" Icon="Setting">
<AppBarButton.Flyout>
<Flyout>
<StackPanel Orientation="Vertical" >
<ComboBox>
<ComboBoxItem Content="Red" IsSelected="True" />
<ComboBoxItem Content="Green" />
<ComboBoxItem Content="Blue"/>
</ComboBox>
</StackPanel>
</Flyout>
</AppBarButton.Flyout>
</AppBarButton>
【讨论】:
您需要将此标记为答案。还有谢谢!!!正是我在努力解决的问题。【参考方案2】:鉴于如何提供少量细节,很难确定任何答案,但由于 TextBox 的大小,我曾经看到过类似的东西。 UWP 文本框在框的末尾有一个“删除”按钮(一个小十字),用于删除当前内容。当 TextBox 垂直调整大小时,删除按钮会缩放以占据整个 TextBox,从而使其看起来是只读的。
如果您遇到类似问题,请尝试在 TextBox 上设置 AcceptsReturn="True"
和 InputScope="Text"
。
【讨论】:
以上是关于文本框在浮出控件、UWP 商店应用程序中变为只读的主要内容,如果未能解决你的问题,请参考以下文章
c#如何使一个文本框变为不可编辑?但是又可以复制里面的数据?