WPFの多くの種類は、Freezable
に由来します。変更可能なPOCOオブジェクトに不変性を提供し、特定の状況でパフォーマンスを向上させます。Freezableから派生したWPFオブジェクトをXAMLでフリーズするにはどうすればよいですか?
私の質問は、XAMLマークアップでオブジェクトをフリーズする方法です。
(similar but different questionも掲載しています)。
WPFの多くの種類は、Freezable
に由来します。変更可能なPOCOオブジェクトに不変性を提供し、特定の状況でパフォーマンスを向上させます。Freezableから派生したWPFオブジェクトをXAMLでフリーズするにはどうすればよいですか?
私の質問は、XAMLマークアップでオブジェクトをフリーズする方法です。
(similar but different questionも掲載しています)。
が含まれ、あなたがFreeze
属性を使用XMLネームスペースhttp://schemas.microsoft.com/winfx/2006/xaml/presentation/options
で定義されています。
次の例では、SolidColorBrush
がページリソースとして宣言され、フリーズしています。次に、ボタンの背景を設定するために使用されます。
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="po">
<Page.Resources>
<!-- This brush is frozen -->
<SolidColorBrush x:Key="MyBrush" po:Freeze="True" Color="Red" />
</Page.Resources>
<!-- Use the frozen brush -->
<Button Background="{StaticResource MyBrush}">Click Me</Button>
</Page>
あなたのXAML名前空間宣言にこれを追加します。
xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="po"
を、その後、あなたの凍結可能なオブジェクトには、マークアップで宣言さFreezable
オブジェクトをフリーズするには、この属性
po:Freeze="True"
'MC' の名前空間から来るのでしょうか? –
ああ、私はそれを逃したと思う。今すぐ修正しました。 – Botz3000
最後の属性は 'mc:Ignorable =" po "'でなくてはなりませんか? – CodeNaked
@ CodeNaked、私はあなたが正しいと信じています。編集されました。 –