模板定義為:
<ContentPage.Resources>
<DataTemplate x:Key="MenuOptionTemplate">
<controls:MenuButtonControl />
</DataTemplate>
</ContentPage.Resources>
<ScrollView Orientation="Vertical">
<FlexLayout
AlignContent="Start"
AlignItems="Start"
BindableLayout.ItemTemplate="{StaticResource MenuOptionTemplate}"
BindableLayout.ItemsSource="{Binding MenuOptions}"
JustifyContent="SpaceEvenly"
VerticalOptions="Start"
Wrap="Wrap" />
</ScrollView>
MenuButtonControl 定義為:
...
<ImageButton
Source="{AppThemeBinding Light={Binding LightImageSource},
Dark={Binding DarkImageSource}}"/>
...
MenuOptions 是根據用戶的角色動態生成的,但基本上每個選單選項都是這樣創建的:
new MenuOption {
Title = "My Title",
LightImageSource = "sample_light",
DarkImageSource = "sample_dark"
}
{系結 LightImageSource}不起作用。
那么實作這一點的正確方法是什么?
uj5u.com熱心網友回復:
因為AppThemeBinding.Light是標記擴展(從 繼承IMarkupExtension)屬性,而不是BindableProperty您不能使用DynamicResource或Binding與它一起使用的屬性。
因此,您不能AppThemeBinding在這種情況下使用。但是您可以使用系結(沒有 AppThemeBinding)、轉換器..(請參閱鏈接問題的答案),您只需要添加邏輯以根據活動主題有條件地設定適當的影像源,使用:
Application.Current.RequestedTheme;
在 xamarin 表單上動態系結影像源
AppThemeBinding 源
請求主題
編輯
要對主題更改做出反應,請使用事件而不是測驗屬性RequestedThemeChanged:
如何檢測 Xamarin Forms 系統主題更改
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/506321.html
標籤:xml xamarin xamarin.forms xamarin 结合
