0

プログラムで項目にUIElementsを追加しようとしています。LongListSelectorヘッダー、フッター、アイテムなどのテンプレートを作成しました。

現在、私は次のようなことをしています (リスト項目テンプレート):

<DataTemplate x:Key="listItemTemplate">
     <ContentPresenter Content="{Binding ItemContent}"></ContentPresenter>
</DataTemplate>

モデル内で、さまざまな UI 要素を追加する Grid に ItemContent を割り当てます。これがその方法なのか、それとも LongListSelector で可能なのかはよくわかりませんが、リストをスクロールすると「パラメーターが正しくありません」というメッセージが表示されます。例外 (最初は、すべてが正常に見え、追加されたすべての要素が正常に見えます)。さまざまなアプローチを試しましたが、どれもうまくいきませんでした。特定のアイデアなしに、ランダムにソリューションを試しているだけだと感じています。LongListSelector を使用してこれを行うことができた人はいますか (提案をいただければ幸いです)。

コール スタック:

LongListSelectorPOC.dll!LongListSelectorPOC.App.Application_UnhandledException(object sender, System.Windows.ApplicationUnhandledExceptionEventArgs e) Line 102 + 0x5 bytes C# System.Windows.dll!MS.Internal.Error.CallApplicationUEHandler(System.Exception e) + 0x30 bytes
System.Windows.dll!MS.Internal.Error.GetXresultForUserException(System.Exception ex) + 0x4d bytes
System.Windows.dll!MS.Internal.FrameworkCallbacks.ManagedPeerTreeUpdate(System.IntPtr oldParentElement, System.IntPtr parentElement, System.IntPtr childElement, byte bIsParentAlive, byte bKeepReferenceToParent, byte bCanCreateParent) + 0x6b bytes
[External Code] System.Windows.dll!MS.Internal.XcpImports.MeasureOverrideNative(System.IntPtr element, float inWidth, float inHeight, out float outWidth, out float outHeight)
System.Windows.dll!MS.Internal.XcpImports.FrameworkElement_MeasureOverride(System.Windows.FrameworkElement element, System.Windows.Size availableSize) + 0x26 bytes System.Windows.dll!System.Windows.FrameworkElement.MeasureOverride(System.Windows.Size availableSize) + 0x7 bytes
System.Windows.dll!System.Windows.FrameworkElement.MeasureOverride(System.IntPtr nativeTarget, double inWidth, double inHeight, out double outWidth, out double outHeight) + 0x43 bytes [External Code] System.Windows.dll!MS.Internal.XcpImports.Measure_WithDesiredSizeNative(System.IntPtr element, float inWidth, float inHeight, out float outWidth, out float outHeight)
System.Windows.dll!MS.Internal.XcpImports.UIElement_Measure_WithDesiredSize(System.Windows.UIElement element, System.Windows.Size availableSize) + 0x26 bytes
System.Windows.dll!System.Windows.UIElement.Measure_WithDesiredSize(System.Windows.Size availableSize) + 0x39 bytes System.Windows.dll!System.Windows.Controls.VirtualizingStackPanel.MeasureChild(System.Windows.UIElement child, System.Windows.Size layoutSlotSize) + 0x42 bytes System.Windows.dll!System.Windows.Controls.VirtualizingStackPanel.GeneratePreviousChild(int childIndex, System.Windows.Size layoutSlotSize) + 0x6f bytes
System.Windows.dll!System.Windows.Controls.VirtualizingStackPanel.GeneratePreviousItems(ref double logicalVisibleSpace, ref System.Windows.Size stackDesiredSize, System.Windows.Size layoutSlotSize, bool isHorizontal, bool adjustPositions) + 0x138 bytes
System.Windows.dll!System.Windows.Controls.VirtualizingStackPanel.MeasureOverride(System.Windows.Size constraint) + 0x4e1 bytes System.Windows.dll!System.Windows.FrameworkElement.MeasureOverride(System.IntPtr nativeTarget, double inWidth, double inHeight, out double outWidth, out double outHeight) + 0x43 bytes [External Code]

4

2 に答える 2

0

DataTemplateSelectorアプローチを使用する必要があります。

たとえば、フィールド、、を使用して列挙型ItemTypeを定義し、GridクラスBorderStackPanelそのDataTemplateSelector列挙型を使用してテンプレートを選択します。

についてDataTemplateSelectorは、次の記事をご覧ください:http ://www.windowsphonegeek.com/articles/Implementing-Windows-Phone-7-DataTemplateSelector-and-CustomDataTemplateSelector

于 2012-08-14T07:55:56.437 に答える
0

に使用ObservableCollectionItemContentます。

于 2012-08-14T10:22:02.130 に答える