在Wpf (mvvm)中改变WrapPanel的方向



我的WPF程序设计出了一个问题。我的XAML看起来像这样:

<StackPanel Orientation="{Binding Orientation}">
   <Border ... /> 
   <Border ... /> 
   <Border ... />
   <Border Margin="2"
           VerticalAlignment="Stretch"
           CornerRadius="3"
           Padding="4">
      <WrapPanel>
         <TextBlock VerticalAlignment="Center"
                    Text="Time Range:"
                    Width="66" />
         <controls:WinFormsWrapper EndDateTime="{Binding EndDateTime,Mode=TwoWay}"
                                   InitialEndDateTime="{Binding InitialEndDateTime}"
                                   InitialStartDateTime="{Binding InitialStartDateTime}"
                                   StartDateTime="{Binding StartDateTime,Mode=TwoWay}"/>
      </WrapPanel>
   </Border>
   <Border ... /> 
</StackPanel>

在WrapPanel里面,你可以看到我的WinFormsWrapper。在我的视图模型中,我得到了一个属性Orientation,它将决定如何定向StackPanel。如果方向设置为vertical,我希望WrapPanel现在水平填充整个控件,反之亦然。

有谁知道这样做的好方法吗?

编辑:

属性类型为"System.Windows.Controls.Orientation",取值为"System.Windows.Controls.Orientation.Vertical"one_answers"System.Windows.Controls.Orientation.Horizontal"

如果将Background设置为WrapPanel,则面板为全尺寸。
我认为你应该使用DockPanel而不是你的WrapPanel与属性值LastChildFill="True"

您的错误来自无效的值。为Orientation属性设置有效的起始值

private Orientation orientation = Orientation.Horizontal;

最新更新