这是我在xaml中所拥有的:
<DataGrid Name="dataGrid">
<DataGridTemplateColumn Header = "Base" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<RadioButton Grid.Column="0" GroupName="{Binding Index}" Name="ABCD" Content="ABCD" IsChecked="True" Checked="radioButton_Checked"/>
<RadioButton Grid.Column="1" GroupName="{Binding Index}" Name="XYZ" Content="XYZ" Checked="radioButton_Checked" />
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid>
以下是某些函数(任何)xaml.cs中的一些代码:
DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(i);
FrameworkElement radioButton = dataGrid.Columns[0].GetCellContent(row) as FrameworkElement;
radioButton.Visibility = Visibility.Hidden;
当我隐藏全细胞时,我可以隐藏能见度。但我想在运行时将单选按钮内容从“XYZ”更改为“HAHAHA”。我怎样才能实现这一目标?
答案 0 :(得分:1)
您可以使用值转换器来实现此目的。这可用于根据索引值更改名称;
public class IndexToXYZOrHaHaHaConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var index = (int) value;
if (index > 10)
{
return "XYZ";
}
return "HaHaHa";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
您需要通过向资源字典添加静态资源来创建该类的实例。
<local:IndexToXYZOrHaHaHaConverter x:Key="IndexToXYZOrHaHaHaConverter"/>
然后,您需要将单选按钮的内容从“xyz”更改为此;
Content="{Binding Index, Converter={StaticResource IndexToXYZOrHaHaHaConverter}}"
这应该根据索引动态切换xyz和HaHaHa之间的值。在我给出的示例中,这取决于值是大于还是小于10,这可能不是您想要的,因此您必须修复逻辑。我还假设索引是一个整数,如果索引是其他的,你可能也需要改变它。
转换器非常适合根据绑定值设置属性,这些绑定值与它们绑定的值不直接对应,例如将字符串转换为颜色。
希望这有一些帮助。