【问题标题】:How to expose properties of a WPF DataTemplate?如何公开 WPF DataTemplate 的属性?
【发布时间】:2009-03-30 17:59:04
【问题描述】:

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

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

我真的希望我足够清楚,请留下 cmets 了解更多详情。

任何讨论都将不胜感激! 提前致谢。

【问题讨论】:

    标签: wpf properties datatemplate setter static-resource


    【解决方案1】:

    这基本上取决于您用于数据模板的对象。而不是使用一些 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>
    

    【讨论】:

      【解决方案2】:

      WPF 数据模板是特定对象类型的视图...您希望 ObjectTypeX 的实例看起来如何。数据模板可以绑定到底层实例的属性。

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

      【讨论】:

      猜你喜欢
      • 2010-10-16
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 2020-04-11
      • 2019-03-02
      • 1970-01-01
      相关资源
      最近更新 更多