にはLongListSelector
、次のように複数のアイテムが表示されていますDataTemplate
。
<TextBlock Text="{Binding Subject}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" />
<StackPanel Orientation="Horizontal">
<TextBlock Text="Last modified :" Margin="15, 0, 5, 0" Foreground="LightGray" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock Text="{Binding LastModified}" Foreground="#989696" Style="{StaticResource PhoneTextNormalStyle}"/>
</StackPanel>
この時点で、すべてが正常に機能し、MVVM とバインディングは問題ありません。
UserControl
この XAML を に移動し、そこからそれらのプロパティをバインドしたいと考えました。そして、私はこのように進めようと考えました:
<UserControl x:Class="..."
xmlns=" ... "
Foreground="{StaticResource PhoneForegroundBrush}"
d:DesignHeight="100" d:DesignWidth="480">
<StackPanel x:Name="LayoutRoot" Background="Transparent">
<TextBlock x:Name="TitleTextBlock" Style="{StaticResource PhoneTextExtraLargeStyle}" />
<StackPanel Orientation="Horizontal">
<TextBlock Text="Last modified :" Margin="15, 0, 5, 0" Foreground="LightGray" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="LastModifiedDateTextBlock" Foreground="#989696" Style="{StaticResource PhoneTextNormalStyle}"/>
</StackPanel>
</StackPanel>
</UserControl>
そして、これは C# クラスです:
public partial class LongListSelectorItemControl
{
private DateTime _lastModifiedDate;
public string Title
{
get
{
return TitleTextBlock.Text;
}
set
{
TitleTextBlock.Text = value;
}
}
public DateTime LastModifiedDate
{
get
{
return _lastModifiedDate;
}
set
{
LastModifiedDateTextBlock.Text = value.ToString(CultureInfo.InvariantCulture);
_lastModifiedDate = value;
}
}
public LongListSelectorItemControl()
{
InitializeComponent();
_lastModifiedDate = new DateTime();
}
}
XAML でユーザー コントロールを次のように使用することを考えました。
<userControls:LongListSelectorItemControl Title="{Binding Subject}" LastModifiedDate="{Binding LastModified}"/>
しかし、何かがうまくいかず、何が原因かわかりません。私のアプリケーションでは、この問題で提示したこの XAML を使用してページが読み込まれ、アプリがクラッシュしないためです。次に、ユーザーは別のページに移動する必要があります。そこでは、いくつかのデータが追加され、ViewModel には表示するデータがいくつかあるため、メイン ページに戻ると、今回は単純にクラッシュします... Application_UnhandledException
(App.xaml.cs
デバッガーを壊します。
追加研究
私は例外を追跡することができましたが、どうやら...
MS.Internal.WrappedException: 'System.Windows.Data.Binding' 型のオブジェクトを 'System.String' 型に変換できません。---> System.ArgumentException: 'System.Windows.Data.Binding' 型のオブジェクトを 'System.String' 型に変換できません
私はまだこれを修正する方法について混乱しています...
何が問題なのかを理解するのに役立つ提案は大歓迎です。ありがとう!