目前我有两个专栏。第一列是组合框类型,可以是电话或电子邮件。第二列是价值。我目前有两个数据模板,一个用于带有掩码的手机类型。如果是电子邮件,它是一个没有掩码的常规文本框。请问如何让它变得动态?
<DataTemplate x:Key="PhoneMaskTemplate">
<Telerik:RadMaskedTextBox BorderBrush="Transparent"
HorizontalAlignment="Left"
Mask="(###) ###-#### x####"
MaskedText="{Binding Value, Mode=TwoWay}" >
</Telerik:RadMaskedTextBox>
</DataTemplate>
<DataTemplate x:Key="NoMaskTemplate">
<TextBox Text="{Binding Value, Mode=TwoWay}" BorderBrush="Transparent" HorizontalAlignment="Left" Margin="-2,0,0,0">
</TextBox>
</DataTemplate>
<Telerik:GridViewDataColumn Header="Value" Width="*"
DataMemberBinding="{Binding Value}"
/>
答案 0 :(得分:1)
您可以实施自定义-Ddependency.locations.enabled=false
,您可以在DataTemplateSelector
属性中设置。
Telerilk:GridViewDataColumn.CellTemplateSelector
然后你有:
public class MyDataTemplateSelector : DataTemplateSelector
{
public DataTemplate EmailTemplate { get; set; }
public DataTemplate PhoneTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if(IsPhone(item))
return PhoneTemplate;
else if(IsEmail(item))
return EmailTemplate;
else
return base.SelectTemplate(item, container);
}
}
你的专栏:
<local:MyDataTemplateSelector x:Key="TemplateSelector"
PhoneTemplate="{StaticResource PhoneMaskTemplate}"
EmailTemplate="{StaticResource NoMaskTemplate}" />
您应该只能正确实施<Telerik:GridViewDataColumn Header="Value" Width="*"
DataMemberBinding="{Binding Value}"
CellTemplateSelector="{StaticResource TemplateSelector}" />
和IsPhone
方法。