我有一个数据网格,其中绑定了一个对象列表。每个对象都有一个Number属性。我有2个单选按钮,如果选中第一个,则默认值应显示在列中,但如果选中第二个单选按钮,我想将整个列除以1000。我尝试使用IValueConverter,但当我将Converter添加到DataGridTextColumn的Binding时,数字列是空的。2我不想改变对象的属性,只想在UI中改变。3我怎样才能做到这一点呢?
我试过的代码:
public class NumberConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is long numValue)
return numValue / 1000.0;
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is long numValue)
return numValue * 1000.0;
return value;
}
}
XAML代码:
<Window.Resources>
<local:NumberConverter x:Key="NumberConverter"/>
</Window.Resources>
<RadioButton
Grid.Column="1"
HorizontalAlignment="Right"
x:Name="MultiplyBy1000"
GroupName="chkFormat"
Content="Default"
IsChecked="{Binding IsDefaultChecked}"
Margin="5"/>
<RadioButton
Grid.Column="2"
HorizontalAlignment="Left"
x:Name="DivideBy1000"
GroupName="chkFormat"
Content="Divide by 1000"
IsChecked="{Binding IsDivideNumChecked}"
Margin="5"/>
....
<DataGridTextColumn Header="Number" Width="0.7*" Binding="{Binding Number,Converter={StaticResource NumberConverter}"/>
1条答案
按热度按时间fwzugrvs1#
您需要使用
MultiValueConverter
并绑定值和单选按钮的IsChecked
值。一个类似下面的值转换器:
以及绑定的用法: