1

C# コードで ListBox を作成します (コンバーターで、どのコントロールを表示するかを決定します)。残念ながら、C# コードで ItemsPanel を WrapPanel に設定できませんでした。現在、次のようなコードがあります(回避策として):

xaml ファイル (ResourceDictionary):

<ItemsPanelTemplate x:Key="HorizontalWrapPanelItemsPanelTemplate" >
    <toolkit:WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>

そしてC#ファイル(コンバーター)で:

listBox.ItemsPanel = Application.Current.Resources["HorizontalWrapPanelItemsPanelTemplate"] as ItemsPanelTemplate;

正しく動作しますが、次のようなコードになります。

listBoxEdit.ItemsPanel = new WrapPanel();   //Not Work

または

WrapPanel wrapPanel = new WrapPanel();
listBoxEdit.ItemsPanel = new ItemsPanelTemplate(wrapPanel);   //Not Work

このようなコードを持っている可能性はありますか? または、現在の私の回避策よりも優れたコードが存在しますか?

タンクス:)

4

1 に答える 1

4

WPF では、 FrameworkElementFactory を使用します。

FrameworkElementFactory factoryPanel = new FrameworkElementFactory(typeof(WrapPanel));
factoryPanel.SetValue(WrapPanel.OrientationProperty, Orientation.Horizontal);

ItemsPanelTemplate template = new ItemsPanelTemplate();
template.VisualTree = factoryPanel;

menu.ItemsPanel = template;

Silverlight ではこれは機能しません。 XAMLReader を使用する必要があります。

listBoxEdit.ItemsPanel = (ItemsPanelTemplate)XamlReader.Load(@"<ItemsPanelTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' >
    <toolkit:WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>");

から: http://blogs.msdn.com/b/scmorris/archive/2008/04/14/defining-silverlight-datagrid-columns-at-runtime.aspx

于 2013-01-14T13:12:18.240 に答える