How to properly reference a class from XAML

27,648

Solution 1

OK... it suddenly started working. Just had to rebuild.

Solution 2

You can add a key so you can set the datacontext in the xaml instead behind code:

   <local:RangeValuesEditTemplateSelector x:key="RVETS">

Then for example set the outer grid's DataContext:

   <Grid DataContext={Binding Source = {StaticResource RVETS}} //Something like this I think

Then anything within that grid you can just bind directly to the property you set behind code. Not sure if this is useful or not, just thought I'd share :)

Share:
27,648
Andy T
Author by

Andy T

Updated on September 08, 2020

Comments

  • Andy T
    Andy T almost 4 years

    OK, this is a super super noob question, one that I'm almost embarrassed to ask...

    I want to reference a class in my XAML file. It's a DataTemplateSelector for selecting the right edit template for a DataGrid column.

    Anyway, I've written the class into my code behind, added the local namespace to the top of top of the XAML, but when I try to reference the class from the XAML, it tells me the class does not exist in the local namespace. I must be missing something really really simple but I just can't understand it...

    Here's my code.

    XAML:

    <Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:tk="http://schemas.microsoft.com/wpf/2008/toolkit"
    xmlns:local="clr-namespace:CustomFields"
    xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    x:Class="CustomFields.MainWindow"
    x:Name="Window"
    Title="Define Custom Fields"
    Width="425" Height="400" MinWidth="425" MinHeight="400">
    
    <Window.Resources>
        <ResourceDictionary>
            <local:RangeValuesEditTemplateSelector>
                blah blah blah...
            </local:RangeValuesEditTemplateSelector>
        </ResourceDictionary>
    </Window.Resources>
    

    C#:

    namespace CustomFields
    {
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                this.InitializeComponent();
    
                // Insert code required on object creation below this point.
            }
        }
    
        public class RangeValuesEditTemplateSelector : DataTemplateSelector
        {
            public RangeValuesEditTemplateSelector(){
    
                MessageBox.Show("hello");
            }
        }   
    }
    

    Any ideas what I'm doing wrong? I thought this should be simple as 1-2-3...

    Thanks!