2010-03-26 11 views
5

OK, questa è una domanda niubbo super super, uno che sono quasi in imbarazzo a chiedere ...come fare riferimento correttamente una classe da XAML

voglio fare riferimento a una classe nel mio file XAML. È un DataTemplateSelector per la selezione del modello di modifica corretto per una colonna DataGrid.

In ogni caso, ho scritto la classe nel mio codice, ho aggiunto lo spazio dei nomi locale nella parte superiore della XAML, ma quando provo a fare riferimento alla classe da XAML, mi dice che la classe non esiste nel namespace locale. Devo mancare qualcosa di veramente semplice ma non riesco a capirlo ...

Ecco il mio codice.

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

Tutte le idee che sto facendo male? Ho pensato che questo dovrebbe essere semplice come 1-2-3 ...

Grazie!

risposta

3

OK ... all'improvviso ha iniziato a funzionare. Dovevo solo ricostruire.

1

È possibile aggiungere una chiave in modo da poter impostare il DataContext in XAML invece dietro il codice:

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

Quindi ad esempio impostare DataContext della griglia esterna:

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

Poi nulla all'interno di quella griglia puoi semplicemente collegarti direttamente alla proprietà che hai impostato dietro al codice. Non sono sicuro se sia utile o meno, ho pensato di condividere :)

+0

whoaa ha appena realizzato che questo è di 2 anni – TMan