文本框在flyout,UWP商店应用程序中变得非常简单

时间:2016-10-12 12:43:03

标签: c# xaml windows-store-apps uwp uwp-xaml

在按钮弹出按钮中,我在内部使用一个用户控件,我有文本框。在运行应用程序时,文本框显示为只读,不知道为什么我会遇到此问题。我无处可读。

<TextBox Margin="2" Height="32" 
                     MaxHeight="60"
                     TextWrapping="Wrap"
                     HorizontalAlignment="Stretch" 
                     TextAlignment="Left"
                     Text="ramesh"
                     Style="{x:Null}"/>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

很难确定任何答案给出了如何提供的一些细节但我曾经看到类似的东西由于TextBox的大小。 UWP文本框在框的末尾有一个“删除”按钮(一个小十字),用于删除当前内容。当TextBox垂直调整大小时,删除按钮会缩放以占用整个TextBox,从而使其看起来只读。

如果您遇到类似问题,请尝试在TextBox上设置AcceptsReturn="True"InputScope="Text"