在 aLongListSelector
中,我根据以下内容显示了多个项目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 和绑定都正常。
我想将此 XAML 移动到一个UserControl
并从中绑定这些属性。而且,我曾想过以这种方式进行:
<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”类型
我仍然对如何解决这个问题感到困惑......
欢迎任何建议来帮助我找出问题所在。谢谢!