Имея такое 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} вычисляется только один раз. Могу ли я создать вычисляемое свойство, которое будет оцениваться для каждого элемента?