WPF:添付プロパティ(Attached Property)の実装方法
📋 目次(クリックで展開)
WPF でクラスインスタンスを利用する際に、クラスに対して直接プロパティを追加できないが、任意のプロパティを追加して利用したい状況があるかと思います。そのような場合、添付プロパティ(Attached Property)を利用することができます。
MainWindow.xaml.cs
コードビハインドで「propa」と入力してスニペットを挿入します。その後、適宜名前やメタデータを変更していきます。
public partial class MainWindow : Window{ public MainWindow() { InitializeComponent(); }
public static double GetRecord(DependencyObject obj) { return (double)obj.GetValue(RecordProperty); }
public static void SetRecord(DependencyObject obj, double value) { obj.SetValue(RecordProperty, value); }
// Using a DependencyProperty as the backing store for Record. This enables animation, styling, binding, etc... public static readonly DependencyProperty RecordProperty = DependencyProperty.RegisterAttached("Record", typeof(double), typeof(MainWindow), new FrameworkPropertyMetadata(0.0) );
private void Button_Click(object sender, RoutedEventArgs e) { var btn = sender as Button; Debug.WriteLine(btn.GetValue(RecordProperty)); }}MainWindow.xaml
追加した Record 添付プロパティに、double 値を設定します。
<Window x:Class="AttachedPropertyDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:AttachedPropertyDemo" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> <Button Content="abc" Height="30" Width="200" local:MainWindow.Record="3.0" Click="Button_Click"/> </Grid></Window>
💬 コメント