2015-09-14 3 views
0

Я привязываю эллипс к флажку и iValueConverter (работает ... Заполните (см. Ниже)).wpf bind ellipse gradientstop color to ivalueconverter

<Ellipse Name="ellLeftRoleEnabled" 
       Fill="{Binding IsChecked, ElementName=btnRollLeftEnabled, Converter={StaticResource myColorConverter}}" 
       Height="80" Canvas.Left="355" Stroke="#FF0C703E" Canvas.Top="440" Width="80"/> 

Но теперь, как я могу использовать это для LinearGradientBrush/GradientStop?

<Ellipse Name="ellLeftRoleMoving" Height="100" Canvas.Left="345" Stroke="Black" Canvas.Top="535" Width="100"> 
      <Ellipse.Fill> 
       <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
        <GradientStop Color="{?????} Offset="0"/> 
        <GradientStop Color="White" Offset="1"/> 
       </LinearGradientBrush> 
      </Ellipse.Fill> 
     </Ellipse> 

Пожалуйста, помогите. Спасибо.

ответ

1

При использовании цвета Color GradientStop цвет не должен возвращаться как первый конвертор, а цвет. Остальное - то же самое.

+0

спасибо, я попробую – user1562809

+0

Совершенная, дайте мне знать. – Giangregorio

+0

это прекрасно работает – user1562809

0

Ваш преобразователь должен возвращать LinearGradientBrush вместо SolidColorBrush и держать вас XAML как это

public class myColorConverter:IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return ((bool) value) 
      ? new LinearGradientBrush() 
      { 
       EndPoint = new Point(0.5, 1), 
       StartPoint = new Point(0.5, 0), 
       GradientStops = new GradientStopCollection() 
       { 
        new GradientStop(Colors.Red, 0), 
        new GradientStop(Colors.White, 1) 
       } 
      } 
      : new LinearGradientBrush() 
      { 
       EndPoint = new Point(0.5, 1), 
       StartPoint = new Point(0.5, 0), 
       GradientStops = new GradientStopCollection() 
       { 
        new GradientStop(Colors.Blue, 0), 
        new GradientStop(Colors.Red, 1) 
       } 
      }; 
    } 

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

Xaml

<Ellipse Name="ellLeftRoleEnabled" 
      Fill="{Binding IsChecked, ElementName=btnRollLeftEnabled, Converter={StaticResource myColorConverter}}" 
      Height="80" Canvas.Left="355" Stroke="#FF0C703E" Canvas.Top="440" Width="80"/> 
+0

это тоже хорошее решение, THX – user1562809