c#wpf TextBlock有时不显示评估值

时间:2017-06-21 15:29:49

标签: c# wpf

我创建了一个自定义控件,它基本上显示了DataGrid(teleriks RadDataGrid)中显示的行数。

我可以按如下方式使用它:

<utility:GridFooter Grid.Row="2" SourceGrid="{Binding ElementName=GrdResult}" />

ControlTemplate的{​​{1}}我将GridFooter - 属性绑定到TextBlock:

Count

这是转换器:

<TextBlock Text="{Binding Path=SourceGrid.Items.Count, RelativeSource={RelativeSource TemplatedParent}, 
                            Converter={StaticResource IntToFormatStringConverter}, ConverterParameter=N0}" />

所以我更进一步,用VS2015 Live Visual Tree 查找[ValueConversion(typeof(int), typeof(string))] public class IntToFormatStringConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) return "0"; var i = (int) value; var format = parameter as string; if (format == null) return i.ToString(culture); // I have set a breakpoint here, and the value is alaways // correct, even if its not what is beeing displayed // So, It's not the Converter var ret = i.ToString(format, culture); return ret; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 。在 Live Property Explorer 中,TextBlock - 属性具有BindingExpression。在扩展Text - 属性时,评估值 可以正常显示!

我将举几个例子。

  • Text评估值:TextBlock.Text,在用户界面中显示:"11"
  • 1评估值:TextBlock.Text,在用户界面中显示:"325"

似乎在错误情况下,仅显示评估值的第一个字符。也说:评估价值又名。 3是正确的。因此,我在列表中看到Grid.Items.Count项目,325的评估值为TextBox.Text,并显示为"325"

  

以上行为有时只会发生。我在多个地方使用3没有问题,但也没有显着差异。

如果有人知道此问题或对此有任何可能的解决方法,请告知我们。

编辑:

我注意到,在重绘时,值会正确显示。如果是GridFooter在控件内部使用,可以放置和停靠它,只需移动一下就可以重新绘制并立即显示丢失的数字。

此外,我找到了解决方法,将GridFooter更改为Width="Auto"之类的固定值将停止该错误。但是我仍然想知道,是什么导致错误的绘画。

1 个答案:

答案 0 :(得分:0)

这看起来可能是剪辑问题(即文本框没有填满所有可用空间,所以只显示第一个字符),试试这个:

<TextBlock HorizontalAlignment="Stretch" Text="{Binding Path=SourceGrid.Items.Count, RelativeSource={RelativeSource TemplatedParent}, 
                            Converter={StaticResource IntToFormatStringConverter}, ConverterParameter=N0}" />

关键部分是 HorizontalAlignment="Stretch" 属性。