Xaml 在Windows Phone 8.1上使用MVVM Light进行双向数据绑定

Xaml 在Windows Phone 8.1上使用MVVM Light进行双向数据绑定,xaml,mvvm,windows-phone-8.1,windows-store-apps,mvvm-light,Xaml,Mvvm,Windows Phone 8.1,Windows Store Apps,Mvvm Light,我正在尝试使用MVVM创建一个带有ListPickerLyout的自定义按钮。我想要达到的结果是: 我的问题是如何将SelectedItem从listpickerlyout绑定到内容TextBlock 我正在使用MVVM Light Windows Phone 8.1(应用商店Appp) 我的Xaml代码: <Button Background="White" HorizontalAlignment="Stretch" HorizontalContentAlignmen

我正在尝试使用MVVM创建一个带有
ListPickerLyout
的自定义按钮。我想要达到的结果是:

我的问题是如何将
SelectedItem
listpickerlyout
绑定到内容
TextBlock

我正在使用MVVM Light Windows Phone 8.1(应用商店Appp)

我的Xaml代码:

<Button Background="White"
    HorizontalAlignment="Stretch" 
    HorizontalContentAlignment="Stretch">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="40" />
    </Grid.ColumnDefinitions>

    <!-- Content TextBlock -->
    <TextBlock Text="{Binding MyVM.SelectedItem, Mode=TwoWay}"
                Style="{StaticResource DefaultTextBlock}"
                FontSize="22"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                Margin="10, 0, 0, 0"/>

    <Image Height="20"  Grid.Column="1"
            VerticalAlignment="Center" HorizontalAlignment="Center"
            Source="../Assets/icons/arrow_down.png"/>
</Grid>

<Button.Flyout>
    <ListPickerFlyout PickerFlyoutBase.Title="$Items$"
                        ItemsSource="{Binding MyVM.listItems}"
                        SelectedItem="{Binding MyVM.SelectedItem, Mode=TwoWay}" >
        <ListPickerFlyout.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding}"
                                Style="{StaticResource DefaultTextBlock}"
                                FontSize="22"/>
                </StackPanel>
            </DataTemplate>
        </ListPickerFlyout.ItemTemplate>
    </ListPickerFlyout>
</Button.Flyout>

编辑:

解决了这个问题,我忘记添加
RaisePropertyChanged(“SelectedItem”)

因此,在我的MVVM类中:

private string _selectedItem;
public string SelectedItem
{
    get { return _selectedItem; }
    set
    {
        if (_selectedItem != value)
        {
            _selectedItem = value;
            RaisePropertyChanged("SelectedItem");
        }
    }
}

只需添加
RaisePropertyChanged(“SelectedItem”)

完整代码:

private string _selectedItem;
public string SelectedItem
{
    get { return _selectedItem; }
    set
    {
        if (_selectedItem != value)
        {
            _selectedItem = value;
            RaisePropertyChanged("SelectedItem");
        }
    }
}

只需添加
RaisePropertyChanged(“SelectedItem”)

完整代码:

private string _selectedItem;
public string SelectedItem
{
    get { return _selectedItem; }
    set
    {
        if (_selectedItem != value)
        {
            _selectedItem = value;
            RaisePropertyChanged("SelectedItem");
        }
    }
}

看来你已经做到了。如何设置SelectedItem?您希望文本块中有什么内容?运行应用程序时,文本块中有什么?欢迎使用StackOverflow Diego。请遵循在中找到的标记指南,不要将标记强制添加到问题标题中,除非它们是标题的自然部分。我已经将你的问题标题编辑成更自然的形式。看来你已经做到了。如何设置SelectedItem?您希望文本块中有什么内容?运行应用程序时,文本块中有什么?欢迎使用StackOverflow Diego。请遵循在中找到的标记指南,不要将标记强制添加到问题标题中,除非它们是标题的自然部分。我已将你的问题标题编辑成更自然的形式。