2010-03-01 16 views
5

Bir ressource sözlüğünde DataTemplate var ve bazılarında düğmelere ihtiyacım var ve yönetme olayları için kodu nasıl kullanabileceğimi bilmiyorum. Bir ResourceDictionary içinde .cs ekleme?

Ben böyle benim kaynak dictionnary bir sınıf koymak için çalıştı:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Class="SLProject.Templates" 
    x:Class="TVTemplate"> 

Ve böyle cs dosyasında sınıf definied:

namespace SLProject.Templates 
{ 
    partial class TVTemplate 
    { 

    } 
} 

inşa Tamam ama

AG_E_PARSER_BAD_TYPE

: uygulama aşağıdaki XAML hatayı alır, başladı

Sınıf türünü bir ClassModifier olarak değiştirmek, sınıfı bir RessourceDictionnary sınıfına dönüştürmek gibi bir şey denedim.

Birisi ...

sayesinde bir idee var.

cevap

0

İki kez tanımlanan x: Class özniteliğiniz var, bu nedenle ayrıştırıcı hatası alıyorsunuz. Bu şekilde bildirimi değiştirin ve çalışması gerekir: Ben İşaretli

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Class="SLProject.Templates.TVTemplate"> 
+0

Kontrol ettim ve bu sadece kopyalama geçmişinde bir hata. Bir defasında tanımlanmış sınıfım var. – gtoulouse

0

ve bunu kopya geçmişin sadece bir hatadır. Bir defasında tanımlanmış sınıfım var.

6

x:Class özniteliğini kullanarak, ResourceDictionary için bir codebehind tanımlamanıza izin verir. Sınıfın tam ad alanını (ör. x:Class="WpfApplication.MyClass") belirtmeniz gerekir ve bu sınıfın partial olarak tanımlanması gerekir (en azından VS 2010 bu tür bir değiştiriciden şikayetçi olup derleme yapmaz).

ben alay-up basit bir örnek:

1. yeni WPF uygulama projesi oluşturma (WpfApplication)

2. yeni sınıf dosyası ekleme (TestClass.cs) ve aşağıdaki kodu yapıştırın

3. ekle yeni ResourceDictionary (Resources.xaml), MainWindow.xaml ve aşağıdaki kodla

geçmiş açın aşağıdaki kodu

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        x:Class="WpfApplication.TestClass"> 
    <Style TargetType="{x:Type Label}"> 
     <EventSetter Event="Label.MouseDoubleClick" Handler="OnDoubleClick"/> 
    </Style> 
</ResourceDictionary> 
Nihayet

4. dosyayı açın ve yapıştırın örnek telin-up Style bir çift tıklama durumunda

<Window x:Class="WpfApplication.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <ResourceDictionary Source="Resources.xaml"/> 
    </Window.Resources> 
    <Grid> 
     <Label Content="Double click here..." HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Background="Red"/> 
    </Grid> 
</Window> 

, bu size bir ResourceDictionary bazı kod çağırmak için gerektiren bir senaryodur beri.

0

En iyi şey kendi kullanıcı denetiminizi yapmak ve etkinliklerinizi eklemek olabilir. ve daha sonra bu usercontrol'ü kaynak sözlüğüne koydu.

İlgili konular