我有一个对象,其中包含例如“10; 20; 30”之类的字符串属性。我还有一个 get 属性,用于分割字符串,将每个部分转换为双精度型并将它们相加。因此我有“10;20;30”和60.0(双倍)。
现在的问题是。有没有办法在 TextColumn 中显示 60.0(双精度),但在进入编辑模式时编辑字符串“10; 20; 30”?
这样我就可以绑定到一个属性以进行显示并绑定到另一属性以进行编辑?
您可以通过使用不同的模板显示和编辑来利用现有属性本身来实现此目的。
Below CellTemplate
and CellEditingTemplate
可以用于此。
<Grid>
<Grid.Resources>
<local:ValueConverter x:Key="ValueConverter"/>
<DataTemplate x:Key="DisplayTemplate" >
<TextBlock Text="{Binding StringProperty,
Converter={StaticResource ValueConverter}}"/>
</DataTemplate>
<DataTemplate x:Key="EditTemplate">
<TextBox Text="{Binding StringProperty}" />
</DataTemplate>
</Grid.Resources>
<DataGrid Name="DG1" ItemsSource="{Binding Items}" AutoGenerateColumns="False"
CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Total"
CellTemplate="{StaticResource DisplayTemplate}"
CellEditingTemplate="{StaticResource EditTemplate}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
您可以使用IValueConverter
将更新后的字符串值转换为double
根据您想要的计算。
public class ValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
try
{
double total = 0.0d;
foreach (var item in value.ToString().Split(';'))
total += System.Convert.ToDouble(item.Trim());
return total;
}
catch
{
return 0.0d;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Note:您可以为您的用户值添加必要的验证ValueConverter
class.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)