1

我创建了 WPF 项目。在这我使用了 GridControl 和 Slider!我使用滑块值通过Binding和更改 GridControl 的 FontSize INotifyProperty。问题是它改变了 FontSize 的值,但它不适用于并Null Object Reference Error在以下位置生成:

CS文件:

private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            // ... Get Slider reference.
            var slider = sender as Slider;
            // ... Get Value.
            double value = slider.Value;
            // ... Set Window Title.
            this.grid.FontSize = value;   // Error HERE
        }

XAML 代码

 <Grid>
           <Slider Minimum="15" Maximum="30" Value="{Binding GridFontSize, Mode=TwoWay}" ValueChanged="Slider_ValueChanged" />

           <dxg:GridControl AutoGenerateColumns="AddNew" Name="grid"  Margin="0,25,0,0">
            <dxg:GridControl.View>
                         <dxg:TableView Name="View" AllowEditing="False" ShowTotalSummary="True" PreviewMouseDown="View_PreviewMouseDown" MouseDown="View_MouseDown"  />
               </dxg:GridControl.View>
            </dxg:GridControl>
    </Grid>

如何解决这个问题呢?谁能回答我的问题?

4

2 回答 2

1

首先使用属性给你Grid的名字:Name

<Grid Name="YourGrid">
    <Slider Minimum="15" Maximum="30" Value="{Binding GridFontSize, Mode=TwoWay}" 
        ValueChanged="Slider_ValueChanged" />
        <dxg:GridControl AutoGenerateColumns="AddNew" Name="grid"  Margin="0,25,0,0">
        <dxg:GridControl.View>
            <dxg:TableView Name="View" AllowEditing="False" ShowTotalSummary="True" 
                PreviewMouseDown="View_PreviewMouseDown" MouseDown="View_MouseDown" />
        </dxg:GridControl.View>
    </dxg:GridControl>
</Grid>

现在您可以在代码中通过该名称引用它:

private void Slider_ValueChanged(object sender, 
    RoutedPropertyChangedEventArgs<double> e)
{
    // ... Get Slider reference.
    var slider = sender as Slider;
    // ... Get Value.
    double value = slider.Value;
    // ... Set Window Title.
    TextElement.SetFontSize(YourGrid, value);
}
于 2013-10-24T15:27:47.263 回答
0

存在无效值,因此您需要将代码放入 try catch。在 catch 中将其设置为零。还要检查低于零的值并设置为零。

我有类似的代码,其中字体大小也绑定到滑块,并在下面的字体大小上有一个转换器:

公共类 IntToDoubleConverter : IValueConverter {

public object Convert( object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture )
{
    double result = 0;

    try
    {
        result = (double)((int)value);


    }
    catch (Exception) { }

    return result;
}

public object ConvertBack( object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture )
{
    return (int) ((double)value);
}

}

于 2013-10-24T15:38:26.570 回答