Windows Phone 7 - TextBlock Текстовая привязка к ViewModel не возвращает ничего - PullRequest
0 голосов
/ 18 февраля 2011

Я построил модель представления, и список связывается с ObervableCollection, но текстовое поле, которое я использую для временного URL, не будет связывать и возвращать данные. Я не получаю никаких ошибок ни при компиляции, ни при запуске

ViewModel:

public class HomepageModel:INotifyPropertyChanged
{
    public TextBlock bgrImg{get;set;}
    public ObservableCollection<MenuItem> menu {get; private set;}

    public HomepageModel()
    {
        this.menu = new ObservableCollection<MenuItem>();
    }

    public void Load()
    {
        bgrImg = new TextBlock();
        bgrImg.Text = "/Windows7MobileClient;component/Images/Desert.jpg";
        //bgrImg = ;
        menu.Add(new MenuItem("Feed",""));
        menu.Add(new MenuItem("Messages",""));
        menu.Add(new MenuItem("Media",""));
        menu.Add(new MenuItem("Favourites",""));
        menu.Add(new MenuItem("Freinds",""));
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(String propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (null != handler)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

Homepage.xaml

<controls:PanoramaItem Header="menu">
            <Grid>
                <TextBlock Text="{Binding bgrImg}"/>
                <ListBox x:Name="FirstListBox" Margin="0,0,-12,0" ItemsSource="{Binding menu}" MouseLeftButtonUp="FirstListBox_MouseLeftButtonUp" >
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Margin="0,0,0,17" Width="432">
                                <TextBlock Text="{Binding label}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </Grid>
        </controls:PanoramaItem>

Я хочу использовать строку для фонового изображения панорамы. Извините, если это кажется действительно очевидным.

Chris

Ответы [ 2 ]

3 голосов
/ 18 февраля 2011

Вам необходимо вызвать NotifyPropertyChanged () в ваших установщиках для элементов, с которыми вы хотите связать.

1 голос
/ 18 февраля 2011

Еще одна вещь, которую я заметил: вы пытаетесь привязать TextBlock к строке Свойство:

public TextBlock bgrImg{get;set;}
<TextBlock Text="{Binding bgrImg}"/>

Измените тип свойства на строку:

   public string bgrImg{get;set;}
    <TextBlock Text="{Binding bgrImg}"/>
...