私のwpfアプリケーションでは、以下のようにdatatriggerクラスを拡張しました
public class DescriptiveTrigger : System.Windows.DataTrigger
{
public DescriptiveTrigger()
{
}
private String _Description = "";
public String Description
{
get { return _Description; }
set { this._Description = value; }
}
}
これは、ユーザーが作成したトリガーに説明を追加できるようにするためです (単純なコンテキスト メニューを使用してトリガーを追加および削除します)。次に、xamlreader を使用してファイルをリロードする際に、xaml がエクスポートされ、xamlwriter を使用してファイルに保存されます。
'MyControls.DescriptiveTrigger' trigger type in Style not recognized. Error at object 'System.Windows.Style', Line 283 Position 22.
.net 3.5 バージョンを使用して作成されたファイルでも正しく動作する .net4 で記述されたこのアプリケーションのバージョンを持っているので、保存が良好であることはわかっています。
これは、重要でない部分を除いて作成されたもののサンプルです
<Control1 xmlns="clr-namespace:MyControls.Controls;assembly=MyControls"
xmlns:av="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:dc="clr-namespace:MyControls;assembly=MyControls"
xmlns:dcc="clr-namespace:MyControls.Converters;assembly=MyControls"
xmlns:s="clr-namespace:System;assembly=mscorlib">
.........
<av:Label BorderBrush="#FF000000" BorderThickness="1,1,1,1" Background="#FF008000" Foreground="#FFFFFFFF" HorizontalAlignment="Left" VerticalAlignment="Center" ContextMenu="{av:DynamicResource LabelContextMenuKey}" av:Grid.Column="1">
<av:Label.Style>
<av:Style TargetType="av:IFrameworkInputElement">
<av:Style.Triggers>
<dc:DescriptiveTrigger Description="Background Color Trigger Where Value Is Greater Than 100">
<dc:DescriptiveTrigger.Binding>
<av:Binding Path="Content" ConverterParameter="100" RelativeSource="{av:RelativeSource Mode=Self}">
<av:Binding.Converter>
<dcc:GreaterThanToBooleanConverter />
</av:Binding.Converter>
</av:Binding>
</dc:DescriptiveTrigger.Binding>
<av:Setter Property="av:Panel.Background">
<av:Setter.Value>
<av:SolidColorBrush>#FF0000FF</av:SolidColorBrush>
</av:Setter.Value>
</av:Setter>
<dc:DescriptiveTrigger.Value>
<s:Boolean>True</s:Boolean>
</dc:DescriptiveTrigger.Value>
</dc:DescriptiveTrigger>
</av:Style.Triggers>
<av:Style.Resources>
<av:ResourceDictionary />
</av:Style.Resources>
</av:Style>
</av:Label.Style>000
</av:Label>
..........
</Control1>
どうすればこれを修正できますか? いいえ、.net4バージョンを使用することはできません:P