簡體   English   中英

使用默認值的WPF綁定

[英]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 ,以將EllipseFill屬性設置為Red 這將觸發您的最后一個DataTrigger

<DataTrigger Binding="{Binding SignalStatus, Converter={StaticResource IntToSignalStatus} }" Value="Restrictive">
    <Setter Property="Fill" Value="Red"/>
</DataTrigger>

僅當轉換器未返回UnknownPermissiveRestrictive ,您的默認(未注釋)設置程序才適用。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM