标签: stackpanel

如何设置 WPF 的 ItemsControl 以在唯一位置显示每个元素?

我正在构建一个二十一点程序,目前正在研究手牌显示。

我有一个 PlayerSeat UserControl,其中有一个 ItemsControl 用于显示卡片。与正常的二十一点游戏一样,纸牌(在我的例子中是图像)是一张一张地叠在一起的。不同的游戏动作(拆分、双倍下注等)必须改变屏幕上纸牌的布局。ItemsControl 的 ItemSource 属性是ObservableCollection<Card> Hand我的 Player 的 ViewModel 中的“”属性。Card 对象包含带有 Card 图像的 BitmapSource。

我浏览了几个网页(参见帖子末尾),寻找实现我想要的目标的方法。我正在寻找一种方法来执行两个选项之一。

  1. (首选)指定每个“手模式”(拆分、双下等)的布局,并指定手 ( OC<Card>) 的每个索引应按顺序放置的位置。例如,对于 Hand 中的第一张卡片,将 Source 绑定到 Hand[0].CardImage 的 Image 控件放在 (X1, Y1) 处,然后将 Hand[1] Image 放在 (X2, Y2) 处,依此类推。最好可以通过在 ItemsControl 上设置某种绑定模板属性(以在手部模式之间进行更改)来进行调整。

  2. (后备)显示所有已绑定 Source 属性的 Image 控件。将这些图像的 Top/Left 属性绑定到 Hand[0].Top/Left 并在 Hand 类中进行位置计算。

我不是一个在没有亲自调查这个问题的情况下就提出问题的人。看来我需要将 ItemsPanelTemplate 与 StackPanel 一起使用,但不知道从哪里开始。关键是使图像重叠并放置在我想要的位置。您对我的问题的任何启发都会有所帮助。

参考: http: //drwpf.com/blog/itemscontrol-a-to-z/(特别是“ItemsControl:'P'代表面板”)

wpf itemscontrol observablecollection stackpanel itemspaneltemplate

1
推荐指数
1
解决办法
2407
查看次数

如何使用可变数量的 StackPanel 的 StackPanel 创建 DataTemplate

我正在尝试创建一个 DataTamplate,它应该包含一个具有一定数量 StackPanel 的 StackPanel。

        <DataTemplate x:Key="DataTemplate">
        <StackPanel Orientation="Vertical">
            <StackPanel Orientation="Horizontal">
                <Rectangle Fill="Aqua" Margin="2" Height="100" Width="50"  VerticalAlignment="Top" HorizontalAlignment="Left"/>
            </StackPanel>
        </StackPanel>
    </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

上面的代码片段只是为了更好地理解我想要的结果,因为叠片 StackPanel 中的元素将被绑定。

这会生成以下错误消息: ItemsPanelTemplate 的 VisualTree 必须是单个元素。

任何可行的替代方案?

c# wpf datatemplate stackpanel

1
推荐指数
1
解决办法
7331
查看次数

在小网格/面板内旋转文本

<Label Grid.Row="1"
       Height="70"
       Margin="2"
       Width="300"
       Content="{l:Translate Key={x:Static l:MultistringTags.SHOW_MENU}}"
       DockPanel.Dock="Bottom"
       FontSize="20"
       FontWeight="Bold"
       Foreground="White">
       <Label.RenderTransform>
           <RotateTransform Angle="270" />
       </Label.RenderTransform>
</Label>
Run Code Online (Sandbox Code Playgroud)

这里我想旋转文本,它位于网格内,网格列宽等于文本高度。在这种情况下,我只能看到部分文本,就像绘制文本时没有按网格宽度旋转切割并旋转到所需角度一样。我尝试过面板,它们给了我相同的结果。

有谁知道一些解决方法可以让它显示所有文本,我不想使用图像,因为文本应该是可翻译的。

wpf grid xaml label stackpanel

1
推荐指数
1
解决办法
1459
查看次数

wpf布局问题

<Window ... >
    <StackPanel>
        <Button>b1</Button>
        <Button>b2</Button>
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

如何让它看起来像这样:

<Window ...>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>

        <Button>b1</Button>
        <Button Grid.Row="1">b2</Button>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

不使用网格

wpf grid layout stackpanel

0
推荐指数
1
解决办法
209
查看次数

使用Javascript类函数进行15次递归后的堆栈溢出

我有以下代码示例来说明我的观点.当我在Vista上的IE8中加载它时,我收到错误"Stack Overfow at line:16"

如果我使用顶级函数(在testClass对象之外)递归,我可以在没有堆栈溢出的情况下递归数百万次.

为什么会这样?最后我只是实现了一个函数Que而不是使用递归,但对我来说没有意义,我想了解原因.

- 代码 -

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html>
    <head>
        <title>Recusion Test</title>
        <body>
        </body>

        <script type="text/javascript">

            function testClass() {
                this.x = 15;
                this.recurse = function() {
                    this.x--;
                    this.recurse();
                }
            }

            var wtf = new testClass();
                wtf.recurse();

            alert('done');
        </script>
    </head>
</html>
Run Code Online (Sandbox Code Playgroud)

javascript stack-overflow recursion class stackpanel

0
推荐指数
1
解决办法
145
查看次数

WPF在滚动查看器中选择项目

我有ScrollViewer一个StackPanel包含图像.是否可以在ScrollViewer/StackPanel中选择项目?

<ScrollViewer x:Name="Gallery" Grid.Column="1"  Grid.Row="0"   
        HorizontalScrollBarVisibility="Hidden" 
        VerticalScrollBarVisibility="Visible" >
    <StackPanel x:Name="GalleryStack"/>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

c# wpf image scrollviewer stackpanel

0
推荐指数
1
解决办法
1618
查看次数

分裂按钮一半

我试图将一个按钮分成两半,以便我可以在每一半显示文本数据 - 当应用程序扩展时,也可以增加大小.

这是我太远的代码了.

<Button Margin="16,0,16,6" Background="#daf0fc" BorderThickness="0" Height="Auto" HorizontalAlignment="Stretch" BorderBrush="White" Click="edit_house" Padding="0" Focusable="False">           

<Grid>

<Grid.RowDefinitions>
    <RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
    <ColumnDefinition />
    <ColumnDefinition />
</Grid.ColumnDefinitions>


                    <StackPanel Grid.Column="0" Orientation="Vertical" VerticalAlignment="Top" HorizontalAlignment="Left" Background="Black">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Margin="0,0,5,0" Text="{Binding house_number}" FontWeight="Bold" FontSize="14" />
                            <TextBlock Margin="0,0,0,0" Text="{Binding street}" FontWeight="Bold" FontSize="14" />
                        </StackPanel>
                        <TextBlock Text="{Binding postcode}" />
                        <TextBlock Margin="0,6,0,0" Text="{Binding house_type_text}" />
                    </StackPanel>

                    <StackPanel Grid.Column="1" Orientation="Vertical" VerticalAlignment="Top">
                        <StackPanel Orientation="Horizontal" VerticalAlignment="Top"  HorizontalAlignment="Left" Margin="0,2,0,0">
                            <TextBlock Text="£" HorizontalAlignment="Right" Foreground="#FF9D1818" FontWeight="ExtraBold" FontSize="16" />
                            <TextBlock Text="{Binding house_price}" HorizontalAlignment="Right" Foreground="#FF9D1818" FontWeight="ExtraBold" …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml stackpanel

0
推荐指数
1
解决办法
545
查看次数

如何设置stackpanel的IsEnabled属性

我在程序上做这部分.我想将此堆栈面板上的UIElelemnts(radiobuttons)设置为部分可见,因此我想要任何可以使stackpanel属性IsEnabled设置为False的任何等效属性(任何quivalent属性或任何其他方式来实现此目的,因为stackpanel不支持IsEnabled ).

或者,如果有可能有另一个可能是stackpanel的父级并且还支持IsEnabled属性的conntainer.(当我在stackpanel上设置它们时,请不要建议为循环中的每个单选按钮设置IsEnabled为false因为我不能这样做,因为代码中的当前情况我想要一些可以设置为IsEnabled的大容器).

.net c# silverlight stackpanel radio-button

0
推荐指数
1
解决办法
1342
查看次数

wpf scrollviewer鼠标滚轮不适用于stackpanel

我有一个用scrollviewer包装的堆栈面板。在堆栈面板内部,我有一些网格,而在网格内部,又有堆栈面板,MahApps Metro还提供了一些磁贴控件。

如果我拖动滚动条,scrollviewer可以正常工作。但鼠标滚轮不起作用。可能是某些控件正在窃取鼠标滚轮操作,但我无法确定哪一个。我试着在滚动条上滚动鼠标滚轮。但仍然无法正常工作。

<ScrollViewer x:Name="TS" Grid.Row="1" HorizontalAlignment="Stretch" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" CanContentScroll="True" PanningMode="HorizontalOnly" SnapsToDevicePixels="True" Background="Transparent">
    <StackPanel x:Name="TilesPanel" VerticalAlignment="Top" HorizontalAlignment="Stretch" Orientation="Horizontal">
        <StackPanel.Resources>
            <Style TargetType="{x:Type Grid}">
                <Setter Property="Margin" Value="0,50,0,0"/>
            </Style>
        </StackPanel.Resources>
        <Separator Background="{x:Null}" Width="110"></Separator>
        <Grid>
            <StackPanel>
                <StackPanel Orientation="Horizontal">
                    <StackPanel.Resources>
                        <Style TargetType="{x:Type Grid}">
                            <Setter Property="Margin" Value="10,0,0,0"/>
                        </Style>
                    </StackPanel.Resources>
                    <Grid Height="260">
                        <StackPanel>
                            <StackPanel.Resources>
                                <Style TargetType="{x:Type StackPanel}">
                                    <Setter Property="Margin" Value="0,0,0,10"/>
                                </Style>
                            </StackPanel.Resources>
                        <StackPanel Width="247" Height="119">
                            <Custom:Tile x:Name="Mail" Margin="0" Width="auto" d:LayoutOverrides="Height">
                                <Image Stretch="Fill" Source="Res/AppTiles/Mail.png"/>
                            </Custom:Tile>
                        </StackPanel>

                        //and it goes on like this//

                        </grid>
                      </stackpanel>
                <Separator Background="{x:Null}" Width="50"/>
            </Grid> …
Run Code Online (Sandbox Code Playgroud)

c# mousewheel scrollviewer stackpanel wpf-4.0

0
推荐指数
2
解决办法
8669
查看次数

如何在StackPanel上使用Border

所以,我正在尝试在WPF中开发应用程序(再次).我希望在我周围有一个漂亮的黑色边框和圆形的corenrs StackPanel.为了做到这一点,我写了:

<Border x:Name="debugPanel" CornerRadius="10" BorderBrush="Black" BorderThickness="2" Grid.Row="5" Grid.Column="6" Grid.RowSpan="2">
    <StackPanel Grid.RowSpan="3" Background="#C7C7C7">
        <!--contents-->
    </StackPanel>
</Border>
Run Code Online (Sandbox Code Playgroud)

但结果很难看:(见下图:

在此输入图像描述

请注意,它甚至可能是添加边框的错误方式,我只是想出了自己.所以,如果你有任何建议和评论,我也很乐意听到.

c# wpf panel stackpanel

0
推荐指数
1
解决办法
913
查看次数

矩形内的Stackpanel

是否可以在矩形内添加堆栈面板。我需要一个具有圆角的自定义WPF窗口。对我而言,最好的方法是在窗口中添加矩形内容,并使窗口的背景透明。现在我需要两个堆栈面板,但是如何将其放置在矩形中?

wpf window stackpanel

-1
推荐指数
1
解决办法
3914
查看次数