绑定到viewmodel中的单个对象

时间:2013-08-06 20:59:13

标签: silverlight xaml mvvm windows-phone-8

我在viewmodel中获得了这个属性:

        private PushPinModel selectedPushPinModel;
    public PushPinModel SelectedPushPinModel
    {
        get { return selectedPushPinModel; }
        set
        {
            selectedPushPinModel = value;
            RaisePropertyChanged(() => SelectedPushPinModel);
        }
    }

我想绑定视图以显示选择了哪一个:

        <ContentControl DataContext="{Binding SelectedPushPinModel}" VerticalAlignment="Top">
        <ContentControl.ContentTemplate>
            <DataTemplate>
                <Grid Height="100" VerticalAlignment="Top">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="20*"/>
                        <RowDefinition Height="38*"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="91*"/>
                        <ColumnDefinition Width="389*"/>
                    </Grid.ColumnDefinitions>
                    <Border Opacity="0.95" Width="480" Padding="0,0,0,0" BorderThickness="0" HorizontalAlignment="Left" BorderBrush="Transparent" Background="White" Grid.ColumnSpan="2" Grid.RowSpan="2"/>
                    <Image Width="70" Height="70" HorizontalAlignment="Center" VerticalAlignment="Center" Source="{Binding Icon}" Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" />
                    <TextBlock Text="{Binding Header}" Grid.Column="1" Grid.Row="0" Style="{StaticResource TextboxLabelStyle}"/>
                    <TextBlock Text="{Binding Body}" Grid.Column="1" Grid.Row="1" Style="{StaticResource DefaultTextBlockStyle}"/>
                </Grid>
            </DataTemplate>
        </ContentControl.ContentTemplate>
    </ContentControl >

但是我无法让它发挥作用。绑定未在视图中显示,我没有收到任何绑定错误。它是绑定到单个对象的正确方法吗? 我更喜欢这样,而不是直接绑定{Binding SelectedPushPinModel.Body}更脏。

有任何建议如何实现这一目标? 感谢

2 个答案:

答案 0 :(得分:1)

试试这个:

<Label Content="{Binding SelectedPushPinModel}" />

看看它给你带来了什么(如果有的话)。另外,检查“输出”窗口是否有错误。

这一行:

<ContentControl DataContext="{Binding SelectedPushPinModel}">

仅在ViewModel(Class)的DataContext已正确绑定到页面上时才有效。如果不是,那么上面提供的Label绑定将显示为空白。

答案 1 :(得分:1)

解决了它,用ContentControl替换了ContentControl上的DataContext

<ContentControl Content="{Binding SelectedPushPinModel}" VerticalAlignment="Top">

感谢sircodesalot指出我正确的方向!