[英]WPF Binding using a default value
我正在使用Binding
定義三種不同的顏色來填充ellipse
為此,在綁定中,我使用了包含Enum
converter
根據返回的enum
,填充顏色更改
我的一些XAML:
<Ellipse Name="SignalStatus" Height="16" Width="16" Margin="29,35,14.2,68.2">
<Ellipse.Style>
<Style TargetType="Ellipse">
<!--<Setter Property="Fill" Value="Red"/> -->
<Style.Triggers>
<!--SignalStatus "Unknown" -->
<DataTrigger Binding="{Binding SignalStatus, Converter={StaticResource IntToSignalStatus} }" Value="Unknown">
<Setter Property="Fill" Value="Magenta"/>
</DataTrigger>
<!--SignalStatus "Permissive" -->
<DataTrigger Binding="{Binding SignalStatus, Converter={StaticResource IntToSignalStatus} }" Value="Permissive">
<Setter Property="Fill" Value="Green"/>
</DataTrigger>
<!--SignalStatus "Restrictive" -->
<DataTrigger Binding="{Binding SignalStatus, Converter={StaticResource IntToSignalStatus} }" Value="Restrictive">
<Setter Property="Fill" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
轉換器:
public class IntToSignalStatus : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return SignalStatus.Unknown;
switch (value.ToString())
{
case "0":
return SignalStatus.Restrictive;
case "1":
return SignalStatus.Permissive;
default:
break;
}
return PlatformSkip.Unknown;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
在規格文檔中,他們希望默認情況下在控件上設置Red color
。
如何為ellipse
定義默認的填充顏色(紅色)?
PS:我是WPF和C#編程的初學者
您的轉換器應返回Restrictive
,以將Ellipse
的Fill
屬性設置為Red
。 這將觸發您的最后一個DataTrigger
:
<DataTrigger Binding="{Binding SignalStatus, Converter={StaticResource IntToSignalStatus} }" Value="Restrictive">
<Setter Property="Fill" Value="Red"/>
</DataTrigger>
僅當轉換器未返回Unknown
, Permissive
或Restrictive
,您的默認(未注釋)設置程序才適用。
XAML
<Ellipse Fill="{Binding MyColor}"></Ellipse>
模型
private string _myColor = "Red";
public string MyColor
{
get { return _myColor; }
set
{
_myColor = value;
OnPropertyChanged("");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.