我有一个属性,取决于它的状态(比如A和B),我要么显示动画的用户控件,要么显示图像。
现在,如果属性更改,我希望再次触发--数据板选择器。在搜索时,我找到,在WPF中,我可以使用DataTemplate.Trigger,但它是WP中的不可用。
所以,我的问题是
另外,由于只有两种状态,如果认为我可以使用转换器来折叠可见性。对于基本的情况,如果是其他情况,我需要编写两个转换器。(我可以只使用一个转换器吗?)具体情况如下。
如果状态== A: 选择userControl_A 其他:选择userControl_B
另外,
编辑--刚刚实现,我可以使用参数对象只编写一个转换器.
发布于 2012-11-20 07:44:17
您可以实现类似于所描述的DataTemplateSelector的这里。
我用过了,效果也很好。
编辑:
如果需要在属性更改时更新DataTemplate,则应订阅TemplateSelector中数据对象的PropertyChanged事件,并再次执行SelectTemplate方法。
下面是代码示例:
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
City itemAux = item as City;
// Subscribe to the PropertyChanged event
itemAux.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(itemAux_PropertyChanged);
return GetTemplate(itemAux, container);
}
private DataTemplate GetTemplate(City itemAux, DependencyObject container)
{
if (itemAux != null)
{
if (itemAux.Country == "Brazil")
return BrazilTemplate;
if (itemAux.Country == "USA")
return UsaTemplate;
if (itemAux.Country == "England")
return EnglandTemplate;
}
return base.SelectTemplate(itemAux, container);
}
void itemAux_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
// A property has changed, we need to reevaluate the template
this.ContentTemplate = GetTemplate(sender as City, this);
}https://stackoverflow.com/questions/13467018
复制相似问题