使用VisualState将RichEditBox的宽度设置为自动(XAML、C#、Windows 8应用程序)
我是C#Windows8应用程序的初学者。我在屏幕中央有一个RichEditBox,它的宽度随窗口大小而变化。我可以通过编辑自己的属性将此RichEditBox的宽度设置为使用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
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