我有一个数据模板,我在很多页面中使用,数据模板包含几个按钮,我想通过触发器隐藏其中一些按钮(我的意思是在我使用这个按钮的页面中设置这些按钮的IsEnabled属性DataTemplate中)。
换句话说,我甚至想在样式触发器/设置器中设置一个属性'ButtonXIsEnabled','ButtonYIsEnabled'作为可以从我使用此DataTemplate的ListBox中设置的DataTemplate的一部分。
我真的希望我足够清楚,请留下评论以获取更多细节。
任何讨论都会非常感激! 提前谢谢。
答案 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属性绑定到实例属性。将根据基础对象中的值显示或隐藏按钮。