我想在我的 MAUI 應用程式中將一些樣式(顏色)應用于包裹在條目周圍的邊框。當條目聚焦時,我希望它的邊框在未聚焦時為藍色和灰色。是否可以使用 Styles.xaml 中的觸發器來執行此操作?
<Border Style="{StaticResource LogInEntryBoarder}">
<Entry Placeholder="{x:Static res:AppRes.E_mail}" Focused="Entry_Focused" x:Name="Email_Entry" Style="{StaticResource LoginEntry}"/>
</Border>
private void Entry_Focused(object sender, FocusEventArgs e)
{
Border border = (Border)((Entry)sender).Parent;
border.Focus();
}
<Style TargetType="Border" x:Key="LogInEntryBoarder">
<Style.Triggers>
<Trigger TargetType="Border" Property="IsFocused" Value="True">
<Setter Property="Stroke" Value="{AppThemeBinding Light={StaticResource Fifth}, Dark={StaticResource Gray500}}"></Setter>
</Trigger>
</Style.Triggers>
<Setter Property="Stroke" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
<Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource Tertiary}, Dark={StaticResource Gray500}}" />
<Setter Property="StrokeShape" Value="RoundRectangle 2,2,2,2"/>
<Setter Property="Padding" Value="6,0,0,0"/>
<Setter Property="StrokeThickness" Value="1"/>
</Style>
uj5u.com熱心網友回復:
你可能想做這樣的事情:
<Border Style="{StaticResource LogInEntryBoarder}">
<Entry Placeholder="{x:Static res:AppRes.E_mail}" Focused="Entry_Focused" x:Name="Email_Entry" Style="{StaticResource LoginEntry}"/>
<Border.Triggers>
<DataTrigger TargetType="Border"
Binding="{Binding Source={x:Reference Email_Entry}, Path=IsFocused}"
Value="True">
<Setter Property="Stroke" Value="Blue"/>
</DataTrigger>
<DataTrigger TargetType="Border"
Binding="{Binding Source={x:Reference Email_Entry}, Path=IsFocused}"
Value="False">
<Setter Property="Stroke" Value="Grey"/>
</DataTrigger>
</Border.Triggers>
</Border>
這里解釋:https ://learn.microsoft.com/en-us/dotnet/maui/fundamentals/triggers#data-triggers
您不能直接使用 Styles 來執行此操作,因為您需要系結到不同的 View 元素。我認為這種DataTrigger方法是去這里的合適方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/515955.html
