سؤال

لا يحتوي Silverlight على ميزة DataTrigghers، لذلك في هذه الحالة ... ما قد يكون أفضل طريقة لتعيين خيون عنصر مشروط لعنصر منطقي؟

على سبيل المثال ... ما يلي غير ممكن في Silverlight.

<TextBlock Text="{Binding Text}">
    <TextBlock.Triggers>
        <DataTrigger Binding="{Binding IsDefault}" Value="True">
            <Setter Property="FontWeight" Value="Bold"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding IsDefault}" Value="False">
            <Setter Property="FontWeight" Value="Normal"/>
        </DataTrigger>
    </TextBlock.Triggers>
</TextBlock>

شكرا!

هل كانت مفيدة؟

المحلول

يمكنك تطبيق IVALUECONERTER تقوم بتحويل BOOL إلى خزانة الوزن واستخدامه ك محول التوصيل:

<UserControl.Resources>
    <local:BoolToFontWeightConverter x:Key="boolToFontWeight"/>
</UserControl.Resources>

...

<TextBlock Text="{Binding Text}" FontWeight="{Binding IsDefault, Converter={StaticResource boolToFontWeight}}">

نصائح أخرى

كنت فعلا استخدام محول نمط المنطقي.

public class BoolToStyleConverter : IValueConverter
{
    public Style TrueStyle { get; set; }
    public Style FalseStyle { get; set; }

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return ((bool)value) ? TrueStyle : FalseStyle;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

ثم في قسم الموارد، يمكنك تعيين خصائص النمط العامين.

<localHelpers:BoolToStyleConverter x:Key="boolToHistoryTextBlockStyleConverter">
    <localHelpers:BoolToStyleConverter.TrueStyle>
        <Style TargetType="TextBlock">
            <Setter Property="Foreground" Value="Red"></Setter>
        </Style>
    </localHelpers:BoolToStyleConverter.TrueStyle>
    <localHelpers:BoolToStyleConverter.FalseStyle>
        <Style TargetType="TextBlock">
            <Setter Property="Foreground" Value="Black"></Setter>
        </Style>
    </localHelpers:BoolToStyleConverter.FalseStyle>
</localHelpers:BoolToStyleConverter>

يحدد هذا المثال اللون الأمامي، ولكن يمكنك ضبط أي نمط. لتلزم هذا، ستقوم بتعيين المحول، في هذه الحالة، إذا كان iscommentchange صحيحا، فسيكون النص باللون الأحمر، إذا كان خطأ، فهو أسود.

    <TextBlock Name="tbComment" Text="{Binding Path=Comment,Mode=OneTime}"
 TextWrapping="Wrap"  
    Style="{Binding Path=IsCommentChanged, 
    Converter={StaticResource boolToHistoryTextBlockStyleConverter}}" />

قم بإنشاء ICEVALUECONERTER مخصص، وربط وزن الخيون إلى ISDEFAULT، وتحويل صحيح إلى جريء وخطأ إلى طبيعته

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top