如何公开WPF DataTemplate的属性?

时间:2009-03-30 17:59:04

标签: wpf properties datatemplate setter static-resource

我有一个数据模板,我在很多页面中使用,数据模板包含几个按钮,我想通过触发器隐藏其中一些按钮(我的意思是在我使用这个按钮的页面中设置这些按钮的IsEnabled属性DataTemplate中)。

换句话说,我甚至想在样式触发器/设置器中设置一个属性'ButtonXIsEnabled','ButtonYIsEnabled'作为可以从我使用此DataTemplate的ListBox中设置的DataTemplate的一部分。

我真的希望我足够清楚,请留下评论以获取更多细节。

任何讨论都会非常感激! 提前谢谢。

2 个答案:

答案 0 :(得分:1)

基本上这取决于您使用datatemplate的对象。而不是使用一些ButtonYIsEnabled等。尝试使用一些更适合您的域模型的单词。

例如,假设您有一个客户列表,其中一些客户可以购买折扣产品。然后向您的客户添加一个名为CanPurchaseDiscountedProducts的属性,并在DataTemplate中使用该属性

<DataTemplate TargetType="{x:Type local:Customer}">
  <!-- Other Items -->
  <Button Content="Purchase Discounted Products" x:Name="discounts" Visibility="Hidden" />
  <DataTemplate.Triggers>
    <DataTrigger Binding="{Binding CanPurchaseDiscountedProducts}" Value="True">
      <Setter TargetName="discounts" Property="Visibility" Value="Visible"/>
    </DataTrigger>
  </DataTemplate.Triggers>
</DataTemplate>

答案 1 :(得分:0)

WPF数据模板是某种对象类型的视图......您希望ObjectTypeX的实例如何显示。数据模板可以绑定到底层实例上的属性。

因此,如果您的实例上有ButtonXIsEnabled属性,则可以将相应的Button的Visibility属性绑定到实例属性。将根据基础对象中的值显示或隐藏按钮。