У меня возникает проблема со свойством ToolbarItem
и IsEnabled
при попытке включить / выключить его из XAML с помощью триггеров.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
is false , я просто показываю это для целей тестирования.
Есть идеи о том, как с этим бороться?