2010-03-26 10 views
5

OK Referenz auf, ist dies eine super super Noob Frage, die ich fast peinlich bin zu fragen ...Wie man richtig eine Klasse von XAML

ich eine Klasse in meiner XAML-Datei verweisen möge. Es ist ein DataTemplateSelector zum Auswählen der richtigen Bearbeitungsvorlage für eine DataGrid-Spalte.

Wie auch immer, ich habe die Klasse in meinen Code hinter geschrieben, fügte den lokalen Namespace an den Anfang des XAML, aber wenn ich versuche, die Klasse von der XAML verweisen, sagt es mir die Klasse nicht existiert im lokalen Namespace. Ich muss etwas wirklich wirklich einfaches verpasst haben, aber ich kann es einfach nicht verstehen ...

Hier ist mein 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"); 
     } 
    } 
} 

Alle Ideen, was ich falsch mache? Ich dachte, das sollte so einfach sein wie 1-2-3 ...

Danke!

Antwort

3

OK ... es begann plötzlich zu arbeiten. Musste nur umbauen.

1

Sie können einen Schlüssel hinzufügen, so dass Sie die Datacontext in der XAML stattdessen hinter Code einstellen:

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

Dann zum Beispiel das Datacontext des äußeren Gitter:

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

Dann alles innerhalb dieses Gitters Sie können direkt an die Eigenschaft binden, die Sie hinter dem Code festgelegt haben. Nicht sicher, ob das nützlich ist oder nicht, dachte nur, ich würde teilen :)

+0

whoaa hat gerade festgestellt, dass dies 2 Jahre alt ist – TMan

Verwandte Themen