0

コード ビハインドでオブジェクトのコレクションにバインドすることによって生成された XAML で作成された RadioButtons のグループがあります。

選択された RadioButton と、それに関連するオブジェクト (この場合は PaletteSwatch オブジェクト) との間の明確なマッピング方法を探しています。

PaletteSwatch.color フィールドは別の RadioButton スタイル定義で使用されます (ここには記載されていません)。

どんな助けでも大歓迎です。

CSモデルクラス

public class PaletteSwatch
{

    private string colorField;

    public string color
    {
        return colorField;
    }
    ...
}

CS ウィンドウ クラス

...
private ObservableCollection<PaletteSwatch> mDefaultPalette = new ObservableCollection<PaletteSwatch>();

public ObservableCollection<PaletteSwatch> PaletteDefault
{
    get
    {
         return mDefaultPalette;
    }
}

XAML

<ItemsControl ItemsSource="{Binding ElementName=mainWindow, Path=PaletteDefault}" ItemTemplate="{StaticResource swatchTemplate}">
      <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate >
                 <UniformGrid Columns="7"/>
             </ItemsPanelTemplate>
      </ItemsControl.ItemsPanel>
</ItemsControl>

...

<DataTemplate x:Key="swatchTemplate">
     <RadioButton GroupName="filterColorThemes" Click="RadioButton_Click"/>
</DataTemplate>
4

1 に答える 1

0

さて、私は疑問に思っているかもしれない人のための答えを見つけました...

基本的に、RadioButton にタグ フィールドを追加する必要があります。

<RadioButton GroupName="filterColorThemes" Click="RadioButton_Click" Tag="{Binding}"/>

{Binding} タグは、リスト内の要素 (私の場合は PaletteSwatch オブジェクト) を参照します。

次に、CS ファイルで次のようにします。

    private void RadioButton_Click(object sender, RoutedEventArgs e)
    {
        RadioButton rb = sender as RadioButton;
        PaletteSwatch ps = rb.Tag;

        ...

    }
于 2012-10-19T22:33:54.850 に答える