【发布时间】:2019-04-10 02:16:56
【问题描述】:
我在尝试使用触发器从 XAML 中打开/关闭 ToolbarItem 和 IsEnabled 属性时遇到问题。 ToolbarItem不支持触发器,所以我要做的是创建一个支持触发器的Button(隐藏的),然后将Button.IsEnabled绑定到ToolbarItem.IsEnabled;这是示例代码:
<ContentPage.ToolbarItems>
<ToolbarItem x:Name="tlbSave" Text="Save" Clicked="Handle_Clicked">
<ToolbarItem.IsEnabled>
<Binding Source="{x:Reference btnTest}" Path="IsEnabled" />
</ToolbarItem.IsEnabled>
</ToolbarItem>
</ContentPage.ToolbarItems>
<ContentPage.Content>
<StackLayout Padding="10" VerticalOptions="CenterAndExpand">
<Entry x:Name="txtTest" HorizontalOptions="FillAndExpand" />
<Button x:Name="btnTest" Text="HIDDEN" IsEnabled="false" HorizontalOptions="FillAndExpand">
<Button.Triggers>
<MultiTrigger TargetType="Button">
<MultiTrigger.Conditions>
<BindingCondition Binding="{Binding Source={x:Reference txtTest}, Path=Text.Length,
Converter={convert:IsPositiveIntegerConverter}}" Value="true" />
</MultiTrigger.Conditions>
<Setter Property="IsEnabled" Value="True" />
</MultiTrigger>
</Button.Triggers>
</Button>
</StackLayout>
</ContentPage.Content>
如果您尝试这段代码,您将看到btnTest 在txtTest.Text 具有一定价值时如何启用/禁用。但它不会影响tlbSave.IsEnabled 属性。
但是,当我将 tlbSave.IsEnabled 设置为 btnText.PropertyChanged EventHandler
btnTest.IsVisible 是 false,我只是为了测试目的而显示它。
知道如何处理这个问题吗?
【问题讨论】:
-
您究竟为什么要使用触发器?好奇心!你的绑定也不应该像
<ToolbarItem IsEnabled={Binding IsEnabled, Source="{x:Reference btnTest}}" /> -
同理,只是换一种方式
标签: xamarin.forms toolbaritems