【发布时间】:2012-02-12 16:05:11
【问题描述】:
我正在像这样使用我的转换器:
<ControlTemplate TargetType="{x:Type TabItem}">
<Border Name="Border"
Background="{Binding
Path=ConversationState,
Converter={StaticResource conversationStatusConverter},
Mode=TwoWay,
NotifyOnSourceUpdated=true,
ValidatesOnExceptions=True,
UpdateSourceTrigger=PropertyChanged}" >
这是我的触发器定义:
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Border" Property="Background" Value="DeepPink" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter TargetName="Border" Property="Background" Value="LightGray" />
</Trigger>
</ControlTemplate.Triggers>
还有我的转回方法:
public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture)
{
if (value.ToString() == "DeepPink")
return ConversationStatus.Active;
else if (value.ToString() == "Orange")
return ConversationStatus.UnseenMessage;
else if (value.ToString() == "LightGray")
return ConversationStatus.Inactive;
else return DependencyProperty.UnsetValue;
}
当一个选项卡被选中时,背景变成深粉色,但模型永远不会被修改,状态和以前一样。源到目标工作(转换确定),通过选项卡项的 isselected 属性在触发器中目标到源,不在模型上做任何事情。 非常感谢!
【问题讨论】:
-
如果状态和以前一样,你怎么能说转换(转发)有效。级联到转换器的触发器 - 我不认为它打算以这种方式使用。我不明白为什么你不能处理 TabItem 的 IsSelected。
标签: wpf xaml data-binding triggers ivalueconverter