プロパティを使用できますTag
が、汎用タグは winform の時代の名残です。ここでそれについて読んでください。私が気に入らないのは、タグがタイプされていないことです。つまり、キャストして読み取ることを意味し、意味のある名前がありません。別の方法は次のとおりです。
添付プロパティ
幸いなことに、VSにはスニペットタイプとプレスタブがpropa
あります。
そう:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Shapes;
namespace SO_AttachmentProperty
{
public sealed class EllipseAttachments
{
#region Field1
public static int GetField1(DependencyObject obj)
{
return (int)obj.GetValue(Field1Property);
}
public static void SetField1(DependencyObject obj, int value)
{
obj.SetValue(Field1Property, value);
}
// Using a DependencyProperty as the backing store for Field1. This enables animation, styling, binding, etc...
public static readonly DependencyProperty Field1Property =
DependencyProperty.RegisterAttached("Field1", typeof(int), typeof(EllipseAttachments), new UIPropertyMetadata(0));
#endregion
#region Field2
public static int GetField2(DependencyObject obj)
{
return (int)obj.GetValue(Field2Property);
}
public static void SetField2(DependencyObject obj, int value)
{
obj.SetValue(Field2Property, value);
}
// Using a DependencyProperty as the backing store for Field2. This enables animation, styling, binding, etc...
public static readonly DependencyProperty Field2Property =
DependencyProperty.RegisterAttached("Field2", typeof(int), typeof(EllipseAttachments), new UIPropertyMetadata(0));
#endregion
}
}
次に、次のようにプロパティを使用します。
コード内
var ellipse = new Ellipse();
//write
EllipseAttachments.SetField1(ellipse, 123);
EllipseAttachments.SetField2(ellipse, 456);
//read
var f1 = EllipseAttachments.GetField1(ellipse);
var f2 = EllipseAttachments.GetField2(ellipse);
添付ファイルのプロパティは、xaml で独自のものになり
ます。ローカル名前空間に注意してください。
<Window x:Class="SO_AttachmentProperty.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SO_AttachmentProperty"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Ellipse local:EllipseAttachments.Field1="789" local:EllipseAttachments.Field2="67"/>
</Grid>
</Window>