powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Вопрос по конвертерам
2 сообщений из 2, страница 1 из 1
Вопрос по конвертерам
    #36859067
Seekeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть свойство
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
private ObservableCollection<double> thick;
        public ObservableCollection<double> Thick
        {
            get
            {
                if (thick == null)
                {
                    thick = new ObservableCollection<double>();
                    for (double i = 0; i < 10; i++)
                        thick.Add(i);
                }
                return thick;
            }
            set { thick = value; }
        }
К нему привязан комбобокс:
Код: plaintext
1.
2.
3.
4.
<ComboBox Width="70" Name="combo" ToolTip="Выберите толщину границы"
                          ItemsSource="{Binding Path=Thick, Converter={StaticResource doubleConverter}}"
                  SelectedItem="{Binding Path=Poly.StrokeThick, Converter={StaticResource pathConverter}}" 
                          SelectionChanged="combo_SelectionChanged"/>
Где
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
private double strokeThick = 1;
        public double StrokeThick
        {
            get { return strokeThick; }
            set {
                strokeThick = value;
            OnPropertyChanged("StrokeThick");
            }
        }

первый конвертер работает, нормально, а вот второй не работает в прямом направлении, т.е. когда выбран объект с шириной, допустим, 4, в комбоксе по идее должна выбираться линия с шириной 4, а она не выбирается, так и остаётся 0.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
[ValueConversion(typeof(double), typeof(System.Windows.Shapes.Path))]
    public class ThicknessToDoubleConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            //не работает
            var thickness = (double)value;
            System.Windows.Shapes.Path myPath = new System.Windows.Shapes.Path();
            myPath.Stroke = Brushes.Black;
            myPath.StrokeThickness = thickness;
            GeometryGroup myGeometryGroup = new GeometryGroup();
            // Create the line geometry to add to the Path

            myGeometryGroup.Children.Add(new LineGeometry(new Point(0, 10), new Point(60, 10)));
            myPath.Data = myGeometryGroup;
            return myPath;
        }

        /// <summary>
        /// конвертирует линии в значение их ширины
        /// </summary>
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var myPath = (System.Windows.Shapes.Path)value;
            return myPath.StrokeThickness;
        }
    }

Конвертация происходит, вроде бы возращается правильный объект Path, но в комбобоксе ничего не меняется. Подскажите, в чём может быть ошибка, пожалуйста.
...
Рейтинг: 0 / 0
Вопрос по конвертерам
    #36859631
Seekeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тему можно закрывать:)
Сделал так:
<ComboBox Width="70" Name="combo" ToolTip="Выберите толщину границы"
ItemsSource="{Binding Path=Thick, Converter={StaticResource doubleConverter}}"
SelectionChanged="combo_SelectionChanged"
SelectedValuePath="StrokeThickness"
SelectedValue="{Binding Path=Poly.StrokeThick }"
/>
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Вопрос по конвертерам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]