Использование атрибута x:Class
позволяет вам определять код для ResourceDictionary
.
Вы должны указать полное пространство имен класса (т.е. x:Class="WpfApplication.MyClass"
), и такой класс должен быть определен как partial
(по крайней мере VS 2010 жалуется и не компилируется без такого модификатора).
Я смоделировал простой пример:
1. Создание нового проекта приложения WPF ( WpfApplication )
2. Добавьте новый файл класса ( TestClass.cs ) и вставьте следующий код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using System.Windows;
namespace WpfApplication
{
public partial class TestClass
{
private void OnDoubleClick(object obj, MouseButtonEventArgs args)
{
MessageBox.Show("Double clicked!");
}
}
}
3. Добавьте новый ResourceDictionary
( Resources.xaml ), откройте файл и вставьте следующий код
<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>
4. Наконец, откройте MainWindow.xaml и вставьте следующий код
<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>
В примере я подключаю событие двойного щелчка от Style
, так как это сценарий, требующий от вас вызова некоторого кода из ResourceDictionary
.