【问题标题】:How to Get a Tapped Item via DataContext from the View如何通过 DataContext 从视图中获取被点击的项目
【发布时间】:2014-02-21 19:05:49
【问题描述】:

这对我来说是一个有趣的问题,我认为我有一个ListPicker,但是在ListPicker 的DataTemplate 中使用了StackPanel,所以我可以避免ListPicker @ 的问题987654326@ 页面为 NavigatedTo 时调用的事件。使用此实现,我无法获取在视图的 ListPicker 中选择的项目。我需要获取在 ListPicker 中选择的项目的小写版本 name(“浅色”或“深色”)。

MainPage.xaml

<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Name="PickerItemTemplate"> 
       <StackPanel tap="stk_Tap"> 
            <TextBlock Text="{Binding Name}"/> 
        </StackPanel> 
</DataTemplate>
</phone:PhoneApplicationPage.Resources>

<toolkit:ListPicker x:Name="ThemeListPicker" Header="Theme"
            ItemTemplate="{StaticResource PickerItemTemplate}"/>

MainPage.xaml.cs

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    themeList = new List<TestApp.Common.Theme>();
    themeList.Add(new TestApp.Common.Theme() { Name = "Darker", name = "dark" });
    themeList.Add(new TestApp.Common.Theme() { Name = "Lighter", name = "light" });
    ThemeListPicker.ItemsSource = themeList;
}

private void stk_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    if (ThemeListPicker.SelectedIndex != -1)
    {
        //Need to get the current ThemeListPicker's 'name'
        var selectedItem1 = (sender as StackPanel).DataContext as ListPicker;

        //use selectedItem1

    }
}

【问题讨论】:

    标签: c# windows-phone-7 windows-phone-8 datacontext listpicker


    【解决方案1】:

    那个 StackPanel 的 DataContext 是 TestApp.Common.Theme。

    所以,使用它应该可以工作

    var selectedItem1 = (sender as StackPanel).DataContext as TestApp.Common.Theme;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 1970-01-01
      相关资源
      最近更新 更多