2012-04-22 9 views
0

私はポーカーアプリケーションを作成しました。私は6人のプレイヤー、1人のプレイヤーに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

あなたのアイデアは、バインディングを使用して良いです。スレッディングスリープの代わりにストーリーボードを使用することをお勧めしますが、それはここでは問題ではありません。

あなたのImgCardプロパティが本当にPropertyChanged Eventを発生させることを確認する必要があります。 イメージをnew ImageSourceとして更新し、新しいイメージソースをイベントが発生するプロパティに設定してコードをセットアップする必要があります。 IsSpinningは今それがするSetValue Methodeのを使用すると、このMethodeのイベントを発生させます切り替わります場合は、今、あなたは

IsSpinning = NOT IsSpinning 'simple swtich the value 

などの分離コードで値IsSpinningを変更することができます

`

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 

` このIsSpinnningプロパティにバインドされているすべての項目に適用されます。

+0

ありがとうNasenbaer、それはまだ私にとって新しいですが、それはどのように動作するのですか – user1272388

+0

可能であればC#の例でC#の質問に答えてください:) –

+0

HiTech Magic:私は試してみます。私はちょうど現在のケースではC#に変換する必要があり、コンバータを信頼しませんでした。 :-) – Nasenbaer

関連する問題