我创建了一个扑克应用程序。我有6名球员,每位球员2张牌。我想知道如何说明这笔交易。我在交易时用卡片改变了图片,然后一步一步。但卡片图片没有改变。如果我在syncrhon
中执行此操作,则卡片图片将在迭代后更改。如果我使用asynchron
模式,卡片图片不会改变。
谢谢你的帮助。
有代码:
for (int j = 0; j < 2; j++)
{
for (int i = 0; i < opposers.Count; i++)
{
// View.View.Dispatcher.BeginInvoke(() =>
// {
if (j == 0)
GetPlayer(i).Card1 = new Card(deck.Pop());
else GetPlayer(i).Card2 = new Card(deck.Pop());
//Thread.Sleep(500);
//});
}
}
<Image Width="50" Height="80" Source="{Binding Card2.ImgCard}" RenderTransformOrigin="0.5,0.5" Canvas.Left="108.358" Canvas.Top="-8.349">
<Image.RenderTransform>
<CompositeTransform Rotation="16.39" SkewY="1.788" ScaleY="0.995" ScaleX="1.005" />
</Image.RenderTransform>
</Image>
答案 0 :(得分:0)
使用绑定你的想法很好。我建议使用Storyboard而不是Threading Sleep,但这不是问题。
您需要确保ImgCard
属性确实提升了PropertyChanged Event。
然后,您需要通过将图像更新为new ImageSource
来设置代码,并将新图像源设置为事件将引发的属性。
`
Public Shared ReadOnly IsSpinningProperty As DependencyProperty =
DependencyProperty.Register("IsSpinning",
GetType(Boolean),
GetType(MyCode))
Public Property IsSpinning() As Boolean
Get
Return CBool(GetValue(IsSpinningProperty))
End Get
Set(ByVal value As Boolean)
SetValue(IsSpinningProperty, value)
End Set
End Property
` 现在,你可以通过代码隐藏来改变值IsSpinning,如
IsSpinning = NOT IsSpinning 'simple swtich the value
如果IsSpinning现在将切换它将使用SetValue方法,并且此方法将向所有绑定到此IsSpinnning属性的项目引发事件。