![](/img/trans.png)
[英]binding to items self (this) for a button in a itemtemplate/datatemplate?
[英]Binding in DataTemplate/ItemTemplate
我有一个ComboBox,其ItemSource是MyClass的ListCollectionView。 ComboBox使用以下ItemTemplate:
<Style x:Key="StyleComboBoxGroups" BasedOn="{StaticResource BaseComboBox}" TargetType="{x:Type ComboBox}">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<BulletDecorator VerticalAlignment="Center">
<BulletDecorator.Bullet>
<Ellipse Margin="3,0,0,0" Width="4" Height="4"/>
</BulletDecorator.Bullet>
<TextBlock Margin="3,0,0,0" Style="{StaticResource BaseTextBlock}" Text="{Binding}"/>
</BulletDecorator>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
MyClass公开了两个属性:
public sealed class MyClass {public MyEnum Property1 {get; 组; public String Property2 {get; 组; }}
我试图弄清楚如何根据Property1制作TextBlock.Foreground颜色。 目前我试过这些无济于事:
Foreground="{Binding Property1, Converter=MyEnumToColorConverter}"
Foreground="{Binding Converter=MyEnumToColorConverter, Path=Property1}"
Foreground="{Binding Converter=MyEnumToColorConverter, Path=Property1, Source={Binding}}"
但我总是得到一个例外。 如何正确绑定ComboBox项?
声明将成为转换器实例的资源。
<Style.Resources>
<namespace:MyEnumToColorConverter x:Key="MyEnumToColorConverter" />
</Style.Resources>
...然后在绑定中使用该资源:
Foreground="{Binding Property1, Converter={StaticResource MyEnumToColorConverter}}"
另一种方法是静态引用转换器,在这种情况下,您不需要创建资源实例。 将您的转换器变成单身:
public class MyEnumColorConverter : IValueConverter
{
private MyEnumColorConverter() { }
private static IValueConverter _instance;
public static IValueConverter Instance
{
get { return _instance ?? (_instance = new MyEnumColorConverter); }
}
// implement IValueConverter
}
在XAML中,您将像这样引用它:
Foreground="{Binding Property1, Converter={x:Static namespace:MyEnumColorConverter.Instance}}"
如果你实际上有一个MyEnumToColorConverter
类型的转换器,那么为了在绑定中使用它,你需要首先声明它的一个实例。 通常,您将在父控件(或样式)的“ Resources
部分中执行此操作,例如:
<Style.Resources>
<myNamespace:MyEnumToColorConverter x:Key="EnumToColorConverter" />
</Style.Resources>
然后,您可以使用StaticResource
标记扩展名引用它:
Foreground="{Binding Path=Property1, Converter={StaticResource EnumToColorConverter}}"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.