そのようなMarkupExtensionを持っている
public class Extension1 : MarkupExtension
{
private static int _counter = 0;
public override object ProvideValue(IServiceProvider serviceProvider)
{
return string.Format("Item {0}", _counter++);
}
}
そしてこのXAML
<ListBox>
<ListBoxItem Content="{my:Extension1}"></ListBoxItem>
<ListBoxItem Content="{my:Extension1}"></ListBoxItem>
<ListBoxItem Content="{my:Extension1}"></ListBoxItem>
</ListBox>
私はそのようなリストを取得します:
Item 1
Item 2
Item 3
今、私はこのスタイルを使用して同じリストを生成しようとします
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<TextBox Text="{my:Extension1}"></TextBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
そしてそのようなXAMLで
<ListBox ItemsSource="{StaticResource data}"></ListBox>
私は得る
Item 0
Item 0
Item 0
したがって、{my:Extension1}は1回だけ評価されます。すべてのアイテムに対して評価される計算プロパティを作成できますか?