繁体   English   中英

WPF使StackPanel处于水平方向

[英]WPF Make StackPanel in Horizontal Orientation

我的XAML代码如下

<Window.Resources>
    <DataTemplate DataType="{x:Type local:TopRulerElementViewModel}">
            <Ellipse Width="5" Height="5">
                <Ellipse.Fill>
                    <SolidColorBrush Color="Black"/>
                </Ellipse.Fill>
            </Ellipse>
    </DataTemplate>
</Window.Resources>
<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="1" Height="200" Width="500">
        <ItemsControl ItemsSource="{Binding TopRulerElements}"/>
</StackPanel>

我在ViewModel中的代码是这样的

    private ObservableCollection<TopRulerElementViewModel> _TopRulerElements;

    public ObservableCollection<TopRulerElementViewModel> TopRulerElements
    {
        get { return _TopRulerElements; }
        set
        {
            _TopRulerElements = value;
            RaisePropertyChanged("TopRulerElements");
        }
    }

但是当我运行我的应用程序时。 垂直显示所有椭圆。 如何使椭圆水平显示?

您不应该那样做,您需要设置控件的itemspanel属性以指定项目应如何对齐。 尝试以下代码。

    <Window.Resources>
        <DataTemplate DataType="{x:Type local:TopRulerElementViewModel}">
                <Ellipse Width="5" Height="5">
                    <Ellipse.Fill>
                        <SolidColorBrush Color="Black"/>
                    </Ellipse.Fill>
                </Ellipse>
        </DataTemplate>
    </Window.Resources>

    <ItemsControl ItemsSource="{Binding TopRulerElements}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="1" Height="200" Width="500"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
    </ItemsControl>

我找到了答案。 在xaml代码中进行少量更改时,可以垂直显示Ellipse。

<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="1" Height="200" Width="500">
            <ItemsControl ItemsSource="{Binding TopRulerElements}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>
</StackPanel>

添加ItemsPanel,然后工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM