1

WPF について詳しく学ぶために WPF を使用してビンゴ ゲーム シミュレーターを構築しようとしていますが、<ItemsControl>プログラムでテンプレートを変更する方法がわかりません。

VS 2010 の既定の WPF アプリケーションのみを使用しているため、MainWindow.xaml、App.xaml、および MainWindow.xaml.cs があります。

にアクセスしたいの<ItemTemplate>は、そのビンゴ番号が選択された場合にバインドされたテンプレートを変更するためです。

コードビハインドファイルでこの解決策を試しましたが、この状況ではうまくいかないと思います。

MainWindow と App xaml ファイルをセットアップする方法は次のとおりです。

MainWindow.xaml

<ItemsControl Name="icBColumn" ItemsSource="{Binding CardBNumbers}" 
              Grid.Column="0" Grid.Row="2" 
              ItemTemplate="{StaticResource BingoSquare}"
              ItemsPanel="{StaticResource BingoColumn}">

App.xaml

<DataTemplate x:Key="BingoSquare">
  <Border Background="{DynamicResource UnmarkedSquare}">
    <Label Content="{Binding}" />
  </Border>
</DataTemplate>
<RadialGradientBrush x:Key="UnmarkedSquare" GradientOrigin="0.5,0.5" 
                     Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
  <RadialGradientBrush.GradientStops>
    <GradientStop Color="LimeGreen" Offset="1" />
  </RadialGradientBrush.GradientStops>
</RadialGradientBrush>
<ItemsPanelTemplate x:Key="BingoColumn">
  <UniformGrid Name="NumbersGrid" Columns="1" Rows="5"/>
</ItemsPanelTemplate>
4

1 に答える 1

1

このリンクを確認すると、必要なものに十分近いが、いくつかの作業が必要なコードが見つかります。

私はいくつかの再構築を提案します。

たとえば、ItemsControl の ItemsSource を CardBNumbers にバインドします。int のリストか、BingoNumClass などの CustomClass のリストか。カスタム クラスの場合は、ブール型の IsBingo ブール型プロパティを追加します。これはデフォルトで false になります。ビンゴ番号が選択されるたびにコードから true になり、CardBNumbers リストの項目を更新します。

次に、IsBingo プロパティの Datatriggers を使用して ItemTemplate を拡張し、選択されるとすぐにその外観を変更することができます - CardBNumbers リストから true に変わります。

于 2013-01-11T16:52:36.330 に答える