文本框在浮出控件、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#如何使一个文本框变为不可编辑?但是又可以复制里面的数据?

为啥只读文本框在 ASP.NET 中不返回任何数据?

短信权限问题再次浮出水面,Play 商店现在拒绝了我的应用更新

UWP中弹出框屏幕适配问题

你可以将一个uwp应用程序发送到微软商店。如果它有预发布nuget包?