1

XAML に次のリストがあります。

<ListView Name="ListViewBack"
          Margin="3"
          ScrollViewer.HorizontalScrollBarVisibility="Disabled"
          ItemsPanel="{StaticResource IconListPanelTemplate}"
          ItemTemplate="{StaticResource IconListDataTemplate}">
</ListView>

ここで、ItemsPanel と ItemTemplate をリストからグリッド バージョンに変更できるようにしたいと考えています。次のコードを使用してこれを試しました。

ListViewBack.ItemsPanel = Resources["IconGridPanelTemplate"] as ItemsPanelTemplate;
ListViewBack.ItemTemplate = Resources["IconGridDataTemplate"] as DataTemplate;

しかし、実行しても何も起こりません。

何か案は?

ありがとう!

4

2 に答える 2

3

明らかな問題は、Resources[]の代わりに使用していることですFindResource()。一般に、リソースが辞書にResources[]ある場合にのみ機能し、他の場所では機能しません。this.Resources

これは、2 行のコードを書き直す方法です。

ListViewBack.ItemsPanel = (ItemsPanelTemplate)ListViewBack.FindResource("IconGridPanelTemplate");
ListViewBack.ItemTemplate = (DataTemplate)ListViewBack.FindResource("IconGridDataTemplate");

実際には、この目的のためにトリガーを使用するか、DynamicResource を使用してリソース ディクショナリを交換する可能性が高くなりますが、それは別の話です。

ListViewBack.FindResource()の代わりに呼び出したことに注意してくださいFindResource()。これは、IconGridPanelTemplate が UserControl レベルの下のリソース ディクショナリで再定義されている場合です。これが不可能な場合は、単に を呼び出すことができますFindResource()

于 2010-04-11T06:43:22.737 に答える
0

ListView 自体ではなく、ListView.View のスタイルを設定する必要があります。例については、 ViewBase クラスのドキュメントを確認してください。

于 2010-04-12T00:04:28.777 に答える