【问题标题】:Why is the following code not working? - null pointer exception in xaml为什么以下代码不起作用? - xaml 中的空指针异常
【发布时间】:2011-12-31 02:06:14
【问题描述】:

我在 setter 中的 targetname 上得到一个空指针异常,我在其中设置 focusmanager.focuselement 属性。我不确定为什么它不起作用。任何帮助将不胜感激。

 <Style x:Key="DesignerItemStyle" TargetType="ContentControl">
        <Setter Property="MinHeight" Value="50"/>
        <Setter Property="MinWidth" Value="50"/>
        <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ContentControl">
                    <Grid DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}">
                        <s:MoveThumb Template="{StaticResource MoveThumbTemplate}" Cursor="SizeAll"/> 
                        <Control x:Name="ResizeDecorator" Template="{StaticResource ResizeDecoratorTemplate}" Visibility="Collapsed"/>
                        <ContentPresenter Content="{TemplateBinding ContentControl.Content}"/>
                        <TextBox x:Name="textboxName" Text="node" Background="Transparent" BorderBrush="Transparent" BorderThickness="0" HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" Height="Auto" IsHitTestVisible="False"/>
                        <TextBox x:Name="count" Text="100" Background="Transparent" BorderBrush="Transparent" BorderThickness="0" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="Auto" Height="Auto" IsHitTestVisible="False"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsKeyboardFocused" Value="True">
                            <Setter TargetName="ResizeDecorator" Property="Visibility" Value="Visible"/>
                        </Trigger>
                        <Trigger Property="IsManipulationEnabled" Value="True">
                            <Setter TargetName="textboxName" Property="IsHitTestVisible" Value="True"/>
                            <Setter TargetName="textboxName" Property="FocusManager.FocusedElement" Value="textboxName"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

【问题讨论】:

    标签: wpf xaml triggers focus setter


    【解决方案1】:

    我在您的代码中没有看到目标名称。开始删除样式的片段,直到它编译以缩小问题范围。

    【讨论】:

    • 关于 no targetname 你指的是哪一行,我知道问题出在哪里,它是 IsManuplationEnabled 触发器中的第二个设置器,例外是说 targetname 没有实例化,但是同一个触发器中的第一个 setter 工作正常
    • 我认为创建视图时您的焦点管理器尚未设置。
    • 你对我如何解决这个问题有什么建议吗?
    • 我认为你做不到。也许您可以将焦点设置移动到主要样式之外的数据模板?这样,在实例化之前不会尝试访问焦点管理器......
    猜你喜欢
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多