我正在构建一个二十一点程序,目前正在研究手牌显示。
我有一个 PlayerSeat UserControl,其中有一个 ItemsControl 用于显示卡片。与正常的二十一点游戏一样,纸牌(在我的例子中是图像)是一张一张地叠在一起的。不同的游戏动作(拆分、双倍下注等)必须改变屏幕上纸牌的布局。ItemsControl 的 ItemSource 属性是ObservableCollection<Card> Hand我的 Player 的 ViewModel 中的“”属性。Card 对象包含带有 Card 图像的 BitmapSource。
我浏览了几个网页(参见帖子末尾),寻找实现我想要的目标的方法。我正在寻找一种方法来执行两个选项之一。
(首选)指定每个“手模式”(拆分、双下等)的布局,并指定手 ( OC<Card>) 的每个索引应按顺序放置的位置。例如,对于 Hand 中的第一张卡片,将 Source 绑定到 Hand[0].CardImage 的 Image 控件放在 (X1, Y1) 处,然后将 Hand[1] Image 放在 (X2, Y2) 处,依此类推。最好可以通过在 ItemsControl 上设置某种绑定模板属性(以在手部模式之间进行更改)来进行调整。
(后备)显示所有已绑定 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
我正在尝试创建一个 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 必须是单个元素。
任何可行的替代方案?
<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)
这里我想旋转文本,它位于网格内,网格列宽等于文本高度。在这种情况下,我只能看到部分文本,就像绘制文本时没有按网格宽度旋转切割并旋转到所需角度一样。我尝试过面板,它们给了我相同的结果。
有谁知道一些解决方法可以让它显示所有文本,我不想使用图像,因为文本应该是可翻译的。
<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)
不使用网格
我有以下代码示例来说明我的观点.当我在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) 我有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) 我试图将一个按钮分成两半,以便我可以在每一半显示文本数据 - 当应用程序扩展时,也可以增加大小.
这是我太远的代码了.
<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) 我在程序上做这部分.我想将此堆栈面板上的UIElelemnts(radiobuttons)设置为部分可见,因此我想要任何可以使stackpanel属性IsEnabled设置为False的任何等效属性(任何quivalent属性或任何其他方式来实现此目的,因为stackpanel不支持IsEnabled ).
或者,如果有可能有另一个可能是stackpanel的父级并且还支持IsEnabled属性的conntainer.(当我在stackpanel上设置它们时,请不要建议为循环中的每个单选按钮设置IsEnabled为false因为我不能这样做,因为代码中的当前情况我想要一些可以设置为IsEnabled的大容器).
我有一个用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) 所以,我正在尝试在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)
但结果很难看:(见下图:
请注意,它甚至可能是添加边框的错误方式,我只是想出了自己.所以,如果你有任何建议和评论,我也很乐意听到.
是否可以在矩形内添加堆栈面板。我需要一个具有圆角的自定义WPF窗口。对我而言,最好的方法是在窗口中添加矩形内容,并使窗口的背景透明。现在我需要两个堆栈面板,但是如何将其放置在矩形中?
stackpanel ×11
wpf ×8
c# ×6
grid ×2
scrollviewer ×2
xaml ×2
.net ×1
class ×1
datatemplate ×1
image ×1
itemscontrol ×1
javascript ×1
label ×1
layout ×1
mousewheel ×1
panel ×1
radio-button ×1
recursion ×1
silverlight ×1
window ×1
wpf-4.0 ×1