我在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}更脏。
有任何建议如何实现这一目标? 感谢
答案 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指出我正确的方向!