将RadioButton组与其关联数据绑定

时间:2012-10-19 22:29:49

标签: wpf tags radio-button

我在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>

1 个答案:

答案 0 :(得分: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;

        ...

    }