使用VisualState将RichEditBox的宽度设置为自动(XAML、C#、Windows 8应用程序)

使用VisualState将RichEditBox的宽度设置为自动(XAML、C#、Windows 8应用程序),c#,xaml,windows-store-apps,width,visualstates,C#,Xaml,Windows Store Apps,Width,Visualstates,我是C#Windows8应用程序的初学者。我在屏幕中央有一个RichEditBox,它的宽度随窗口大小而变化。我可以通过编辑自己的属性将此RichEditBox的宽度设置为Auto,但我想在窗口宽度低于某个点时将宽度设置为Auto。我正在使用VisualStates定义各种屏幕选项。问题是,当我将该值设置为Auto时,当应用程序尝试调用新的VisualState时,它将崩溃 我的代码如下: <VisualStateGroup x:Name="ApplicationViewState

我是C#Windows8应用程序的初学者。我在屏幕中央有一个RichEditBox,它的宽度随窗口大小而变化。我可以通过编辑自己的属性将此RichEditBox的宽度设置为
Auto
,但我想在窗口宽度低于某个点时将宽度设置为
Auto
。我正在使用
VisualState
s定义各种屏幕选项。问题是,当我将该值设置为
Auto
时,当应用程序尝试调用新的
VisualState
时,它将崩溃

我的代码如下:

    <VisualStateGroup x:Name="ApplicationViewStates">
        <VisualState x:Name="FlexibleViewState">
            <Storyboard>
                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Editor" Storyboard.TargetProperty="Width">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Auto"/>
                </ObjectAnimationUsingKeyFrames>
            </Storyboard>
        </VisualState>
    </VisualStateGroup>

我不知道它为什么这样做。我可以毫无问题地做到以下几点:

    <RichEditBox x:Name="Editor" Width="Auto"/>


但是,当我尝试使用
VisualState
将宽度设置为
Auto
时,它崩溃了。有什么方法可以解决这个问题吗?

首先要意识到的是,宽度自动表示为NaN值。看

考虑到这一点,您可以如下设置(windows 8.1)样式:

<VisualStateGroup x:Name="ApplicationViewStates">
    <VisualState x:Name="FlexibleViewState">
        <Storyboard>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Editor" Storyboard.TargetProperty="Width">
                <DiscreteObjectKeyFrame KeyTime="0">
                     <DiscreteObjectKeyFrame.Value>
                         <x:Double>NaN</x:Double>
                     </DiscreteObjectKeyFrame.Value>
                </DiscreteObjectKeyFrame>
            </ObjectAnimationUsingKeyFrames>
        </Storyboard>
    </VisualState>
</VisualStateGroup> 
如果您使用的是不同风格的XAML,则可能需要使用sys:Double而不是x:Double