wpf custom control not recognized

▼魔方 西西 提交于 2019-11-30 08:41:41

问题


This is my first foray into custom controls, and it's not going well. I have a custom graph control derived from Canvas.

namespace Grapher2 {
    public class SeriesManager : Canvas {
        public SeriesManager() {
            ...
        }
    }
}

It's defined in the same project and namespace as my app. I tried adding a reference to the control in XAML as follows:

<Window x:Class="Grapher2.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:graph="clr-namespace:Grapher2"
Title="Grapher" Width="800" Height="600">

<StackPanel Name="container"  Width="700" Height="500">
    <graph:SeriesManager Name="seriesManager" Width="700" Height="500" />
</StackPanel>

But when I try to reference the control name "seriesManager" in the code-behind for the Window, I get "The name 'seriesManager' does not exist in the current context."

Furthermore, the XAML editor will not render the Window, giving a huge stack trace with the error: "Type 'MS.Internal.Permissions.UserInitiatedNavigationPermission' in Assembly 'PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is not marked as serializable."

I imagine the solution is something stupidly simple for anyone who's done custom controls. But I'm stumped.


回答1:


did you try x:Name="seriesManager" in your xaml?

Edit: This may not be the issue seeing how you said your xaml isn't rendering. I'm guessing once you get the xaml to render in the designer... the code behind will work better.

Edit 2: Whenever I've had a problem with the designer rendering, it's because I'm doing something in the constructor of my custom control. Check your SeriesManager to see if you are doing something in its constructor that is causing a problem. Maybe you are referencing something that doesn't exist yet. If you do have extra code in your constructor, consider moving it to the UserControl_Loaded event.




回答2:


Backing up Scott's answer here, since he helped me solve it:

What I did wrong was trying to access the control BEFORE InitializeComponent(), but was confused by 2 other error messages somewhere else in the code. Just in case someone else has this error.



来源:https://stackoverflow.com/questions/1498341/wpf-custom-control-not-recognized

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!