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 回答