我在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>
答案 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;
...
}