WPF: Биндинг свойства с параметром

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

WPF: Биндинг свойства с параметром

Сообщение Joo » 12.05.2014 (Пн) 13:55

Привет,
имеется следующий код:

ViewModel:
Код: Выделить всё
Public Class TestViewModel
Implements INotifyPropertyChanged

Public ReadOnly Property ReturnParam(Param As String) As String
    Get
        Return Param
    End Get
End Property

Public ReadOnly Property SimpleProperty() As String
    Get
        Return "World!!!"
    End Get
End Property

Public Sub RaisePropertyChanged(PropertyName As String)
    RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(PropertyName))
End Sub

Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
End Class


Xaml:
Код: Выделить всё
<Window.Resources>
    <local:TestViewModel x:Key="vm" />
</Window.Resources>
<Grid DataContext="{StaticResource vm}">
    <StackPanel Orientation="Horizontal">
        <Label Content="{Binding Path=ReturnParam[Hello]}" />
        <Label Content="{Binding Path=SimpleProperty}" />
    </StackPanel>
</Grid>


Под 4.5+ фреймворк, все работает замечательно, свойство ReturnParam с параметром Hello привязывается, но под 4.0 фреймворком уже не работает. Причем долго не мог отловить глюк. На компьютере, где стоит студия, все прекрасно работало и под 4.0 фреймворком, а на другом нет, пока я не додумался обновить на нем фреймворк до 4.5, и тогда сразу все стало нормально, хотя приложение я не собирал заново, целевая платформа осталась 4.0.
Все бы ни чего, но приложение будет работать под Windows XP и максимум, что там можно установить это 4.0 фреймворк, потому вопрос, может кто знает в чем секрет, может костыль какой дописать надо чтобы все заработало?

Вот как это выглядит:
.NET 4.5
Изображение

.NET 4.0
Изображение
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 12.05.2014 (Пн) 14:05

Ничего конкретного сказать не могу. Но у .NET-фреймвёрка могут быть обновления - возможно, стоит проверить их.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: WPF: Биндинг свойства с параметром

Сообщение Joo » 12.05.2014 (Пн) 14:07

Стоят все возможные обновления фреймворка, которые доступны для XP. Засада, нигде ничего внятного не пишут.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 12.05.2014 (Пн) 14:13

Просто из любопытства. Что выводит этот код?
Код: Выделить всё
static void Main(string[] args)
{
  typeof(string).GetField("Empty").SetValue(null, "!"/*null*/);
  Console.WriteLine((new StringBuilder()).ToString());
  Console.WriteLine("Hello world");
  Console.ReadKey();
}
Просто, это изменение, на которое я обратил внимание некоторое время назад - раньше была присвоенная строка, а потом стала пустая.
Последнее это было обновление или нет, не знаю.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: WPF: Биндинг свойства с параметром

Сообщение Joo » 12.05.2014 (Пн) 14:18

На XP проверить пока не могу, а на своем компе с Win7 стоит весь зоопарк фреймворков. На своем компе удается воспроизвести багу, только если установить целевую платформу в 3,5 версию.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 12.05.2014 (Пн) 14:21

Joo писал(а):На XP проверить пока не могу

Я имел в виду проверить на любом компе, который ведёт себя не так как ожидается в плане твоего вопроса.

Joo писал(а):На своем компе удается воспроизвести багу, только если установить целевую платформу в 3,5 версию.

Это сейчас про что?

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: WPF: Биндинг свойства с параметром

Сообщение Joo » 12.05.2014 (Пн) 14:34

Qwertiy писал(а):Я имел в виду проверить на любом компе, который ведёт себя не так как ожидается в плане твоего вопроса.

Вот как раз того компа сейчас рядом нет.

Qwertiy писал(а):Это сейчас про что?

Меня интересует 4.0 фреймворк, но дело в том, что если установлены на машине более свежие версии 4.5-4.5.2, то бага исчезает, не смотря на то, что проект собран с целевой платформой 4.0. Домой я установил уже весь зоопарк фреймворков, и чтобы воспроизвести багу, мне нужно собирать проект с целевой платформой 3.5. Так вот, для чистоты эксперимента лучше бы выполнить твой код именно на том компе, где бага проявляется с 4 фреймворком.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: WPF: Биндинг свойства с параметром

Сообщение FireFenix » 12.05.2014 (Пн) 17:30

Вы не с того начали, вначале нужно выявить проблему - Не отображается? или Не биндится (или биндится не корректно)?

Насколько я помню, под WinXP вообще рендерится не много по другому и возможно просто не влезает содержимое Label'a.
Попробуй задать принудительно ширину и отвести от краёв формы, наверняка содержимое вылезло слева за пределы.
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: WPF: Биндинг свойства с параметром

Сообщение Joo » 12.05.2014 (Пн) 18:41

FireFenix писал(а):или Не биндится

не биндится, к этому свойству даже нет обращения, бряк не срабатывает, даже скорее не корректно биндится, так-как если бы совсем не биндилось то вероятно была бы ошибка, а так просто ничего не происходит. Молчком.

FireFenix писал(а):Насколько я помню, под WinXP вообще рендерится не много по другому

да не, пока я на ноуте не не обновил .NET с 4.0 до 4.5, была такая же петрушка, а на ноуте Win7, причем я проект потом не пересобирал, бага просто исчезла, я так понимаю, 4.5+ заменяет собой предыдущие версии 4.0+.

Вы это легко можете воспроизвести у себя, даже если у вас стоит .NET 4.5+, просто в свойствах проекта выбрать целевую платформу 3.5.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

    TopList