转换异常发生时,WPF绑定非常慢

时间:2018-05-27 10:43:18

标签: wpf data-binding

我有一个文本框绑定到窗口上的double属性,UpdateSourceTrigger设置为PropertyChanged。当文本框的内容不是有效数字时,键入文本会明显变慢。在Visual Studio外部直接运行可执行文件时速度要快一些。奇怪的是,即使他们有类似的规格,我的办公室机器似乎要快得多。

是否导致响应缓慢的转换异常(我可以在输出窗口中看到)我知道异常会减慢程序的速度,但肯定不会那么多。我希望绑定代码捕获异常非常接近它抛出的位置,因此堆栈不需要解开太多级别。我应该以某种方式防止异常发生? 如果是这样,我可以考虑几种方法来做到这一点。

  1. 将文本框绑定到字符串属性
  2. 实施自定义转换器,转换为默认值'价值,说让我的财产双倍?并且在无法解析值时将其设置为null。
  3. 有更好的方法吗?

    这是一个显示我正在使用的绑定的最小样本。

    <Window x:Class="WpfApp5.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApp5"
            mc:Ignorable="d"
            x:Name="_window" Title="MainWindow" Height="176.351" Width="404.73">
        <Grid Margin="0,0,0,0">
            <TextBox HorizontalAlignment="Left" Height="22" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="73"
                     Text="{Binding Quantity, ElementName=_window, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, StringFormat='{}{0:#,0}'}"/>
        </Grid>
    </Window>
    
    public partial class MainWindow : Window
    {
        public double Quantity { get; set; }
    
        public MainWindow()
        {
            InitializeComponent();
        }
    }
    

1 个答案:

答案 0 :(得分:1)

这样的事可能适合你。

null