[英]Binding to static property in static class in WPF
我在綁定來自靜態類的靜態屬性的值時遇到問題。
我的課:
namespace MyNamespace.Data
{
public static class MySettings
{
public static Color BackgroundColor { get; set; }
public static Color FontColor { get; set; }
}
}
XAML:
<Page ...
xmlns:colors="clr-namespace:MyNamespace.Data"
...>
...
<Button Grid.Column="0" Content="Text"
Background="{Binding Source={x:Static s:MySettings.BackgroundColor}}"
Foreground="{Binding Source={x:Static s:MySettings.FontColor}}"
BorderBrush="{Binding Source={x:Static s:MySettings.FontColor}}"/>
當我運行此代碼時,背景設置正常,但其余部分保持不變..
問題是您的源屬性是Color
類型,目標屬性是Brush
。 您可以使用您的顏色創建SolidColorBrush
如下所示:
<Button Content="Text">
<Button.Background>
<SolidColorBrush Color="{Binding Source={x:Static s:MySettings.BackgroundColor}}"/>
</Button.Background>
<Button.Foreground>
<SolidColorBrush Color="{Binding Source={x:Static s:MySettings.FontColor}}"/>
</Button.Foreground>
<Button.BorderBrush>
<SolidColorBrush Color="{Binding Source={x:Static s:MySettings.FontColor}}"/>
</Button.BorderBrush>
</Button>
您不需要使用static
屬性...您可以使用Singleton
模式聲明一個類,因此只能有一個實例,就像static
類一樣。 只需在這個類中使用普通的public
CLR 屬性......像這樣(但有屬性):
public class StateManager
{
private static StateManager instance;
private StateManager() { }
public static StateManager Instance
{
get { return instance ?? (instance = new StateManager()); }
}
...
}
然后只使用Instance
屬性從基本視圖模型中引用它,如下所示:
public StateManager StateManager
{
get { return StateManager.Instance; }
}
然后您可以簡單地訪問 UI 中的屬性,如下所示:
<Ribbon:RibbonCheckBox Grid.Row="1" Label="Audit fields"
IsChecked="{Binding StateManager.AreAuditFieldsVisible}" ... />
<Ribbon:RibbonCheckBox Grid.Row="2" Label="ISRCs on results"
IsChecked="{Binding StateManager.AreIsrcsVisibleOnSearchResults}" ... />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.