Xaml 完全没有绑定的WP8应用程序?

Xaml 完全没有绑定的WP8应用程序?,xaml,windows-phone-8,windows-runtime,winrt-xaml,Xaml,Windows Phone 8,Windows Runtime,Winrt Xaml,我即将开始为WindowsPhone8开发应用程序并开始第一步(我已经有了WinForms的一些C#背景)。但我意识到一切,特别是XAML,似乎都很复杂。即使是最简单的事情,比如填充一个列表,也会让人感到非常痛苦。它确实适用于扁平且极其简单的绑定(如大多数教程中所建议的),但这只是僵硬和不灵活 我想生成一个列表(LongListSelector),其中包含这些信息的项目(“o”是每个项目): 我试图通过以下方式实现这一目标: <phone:LongListSelector x:Name="

我即将开始为WindowsPhone8开发应用程序并开始第一步(我已经有了WinForms的一些C#背景)。但我意识到一切,特别是XAML,似乎都很复杂。即使是最简单的事情,比如填充一个列表,也会让人感到非常痛苦。它确实适用于扁平且极其简单的绑定(如大多数教程中所建议的),但这只是僵硬和不灵活

我想生成一个列表(LongListSelector),其中包含这些信息的项目(“o”是每个项目):

我试图通过以下方式实现这一目标:

<phone:LongListSelector x:Name="LLS_Summary">
    <phone:LongListSelector.ItemTemplate>
        <DataTemplate>
            <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top">
                <TextBlock Text="{Binding Name}" Style="{StaticResource PhoneTextLargeStyle}" />
                <TextBlock Text="{Binding TotalAmount} ({Binding Things.Count})" /> <!-- throws an error, concatenation doesn't work? -->
                <!-- well yeah this is obviously not possible with data binding -->
            </StackPanel>
        </DataTemplate>
    </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>

// in .cs
LLS_Summary.ItemsSource = App.MyItems; // IList

如何在Win(p)RT中实现这一点?这就是实现它的方法吗?

一个属性只能有一个绑定,以实现类似

<TextBlock Text="{Binding TotalAmount} ({Binding Things.Count})" />

可以使用两个文本块,也可以使用梯段和StringFormat

<TextBlock>
     <Run Text="{Binding TotalAmount}"/>
     <Run Text="{Binding Things.Count, StringFormat='{}({0})'}"/>
</TextBlock>


谢谢,但是条件文本块呢?在这一点上,我会首先研究值转换器之类的东西,或者如果更改与数据模板选择器有很大的不同。值转换器肯定是前进的方向,并且是xaml数据绑定的固有部分。它们有助于将逻辑与表示层分离。
Label line1 = new Label();
line1.Text = o.Name;
Label line2 = new Label();
line2.Text = o.TotalAmount + " (" + o.Things.Count + ")";
Label line3 = new Label();
if (o.MiscThings.Count > 0)
    line3.Text = o.MiscThings.Count + " other thing(s)";
else
    line3.Text = "";

// sizing, positioning etc.

Panel panel = new Panel();
panel.Controls.Add(line1);
panel.Controls.Add(line2);
panel.Controls.Add(line3);

LLS_Summary.Controls.Add(panel);
<TextBlock Text="{Binding TotalAmount} ({Binding Things.Count})" />
<TextBlock>
     <Run Text="{Binding TotalAmount}"/>
     <Run Text="{Binding Things.Count, StringFormat='{}({0})'}"/>
</TextBlock>