【问题标题】:Windows 8 TextBlock in DataTemplateDataTemplate 中的 Windows 8 文本块
【发布时间】:2014-01-10 10:45:52
【问题描述】:
<FlipView Name="flipView"
            AutomationProperties.AutomationId="ItemsFlipView"
            AutomationProperties.Name="Item Details"
            TabIndex="1"
            Grid.Row="1"
            ItemsSource="{Binding}" Style="{StaticResource FlipViewStyle1}">
            <TextBlock Name="answerT" Text="{Binding question}"/>
            <FlipView.ItemContainerStyle>
                <Style TargetType="FlipViewItem">
                    <Setter Property="Margin" Value="0,137,0,0"/>
                </Style>
            </FlipView.ItemContainerStyle>
            <FlipView.ItemTemplate>
                <DataTemplate>
                    <TextBlock x:Name="flipTxt" Text="{Binding question}"/>
                </DataTemplate>
            </FlipView.ItemTemplate>
</FlipView>

我在 XAML 中定义了上述 FlipView。我想在 C# 中的字符串中获取“flipTxt”TextBlock 中的信息。

尝试使用 VisualTreeHelper,但我似乎无法准确理解它是如何工作的。

同样,尝试创建另一个文本块 (answerT) 来读取相同的信息并从中获取文本。也没用。

谢谢

乐: 这就是我进行绑定的方式,我从 MobileService 获取数据。

private IMobileServiceTable<myObj> obj_tb = App.MobileService.GetTable<myObj>();
private ObservableCollection<myObj> obj_it;


var res= await obj_tb.ToListAsync();
obj_it = new ObservableCollection<myObj(res);
flipView.ItemsSource = obj_it;

【问题讨论】:

  • 既然是绑定值,那你不是从SelectedItem获取绑定
  • 你可以从FlipView'sDataContext得到它

标签: c# xaml


【解决方案1】:

如果您的 FlipView 正确绑定到其集合,您可以在代码中访问不同事件的 SelectedItem,例如 SelectionChanged 事件

private void flipView_SelectionChanged(object sender, Windows.UI.Xaml.Controls.SelectionChangedEventArgs e)
    {
        if (flipView != null)
        {
            var item = flipView.SelectedItem as MyObj;
            string question = item.Question;
            string answer = item.Answer;
        }
    }

可能的 MyObj

public class MyObj
{
    public string Question { get; set; }
    public string Answer { get; set; }
}

或者当您使用 MobileServices 时,如果使用 Json.NET,您可能会遇到此问题

public class MyObj
{
    [JsonProperty(PropertyName = "Question")
    public string Question { get; set; }

    [JsonProperty(PropertyName = "Answer")]
    public string Answer { get; set; }
}

【讨论】:

  • 也尝试了类似的东西,dellywheel。但是,如果我在 DataTemplate 中有 2 个 TextBlock,一个绑定到“问题”,另一个绑定到“答案”,该怎么办?如果我错了,请纠正我,但目前你不是在选择整个文本块而我只对 Text 属性感兴趣吗?
  • 理想情况下,您用于绑定的 myObj 将具有 2 个用于问答的属性。我会更新答案以说明我的意思
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
相关资源
最近更新 更多