我有一個WPF應用程序,它具有ViewBox以顯示我的集合中的項目,爲我的結果提供了2列網格。WPF:根據數據量更改ViewBox的樣式
我想要做的是,根據我的收藏中的物品數量,更改列數。例如,如果列表中有10個項目,然後僅顯示1列;如果我的列表中有10個項目,則將它們顯示在2列中;如果我的列表中有20個項目,則顯示3列。
這裏是我目前:
<Viewbox>
<ItemsControl ItemsSource="{Binding myCollection}" Style="{DynamicResource myStyle}" />
</Viewbox>
這裏是myStyle的目前定義:
<Style x:Key="myStyle" TargetType="{x:Type ItemsControl}">
<Setter Property=ItemsControl.ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<UniformGrid Columns="2" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
我怎樣才能讓這段代碼工作,上述要求?謝謝。
+1。很好,很乾淨。 – Gishu 2010-05-03 14:40:41
如果其他WPF noobs看到這個代碼,請注意它不會按原樣編譯(至少對我而言)。我必須在轉換器類中添加一個'ValueConversion'屬性,創建一個該類型的靜態資源,然後設置'Converter = {StaticResource myConverter}'。也許我錯過了一些東西,但那很奏效。 – Pat 2010-08-27 20:56:21
只是爲了澄清事情:1)你不需要聲明'StaticResource'。只需指定您的轉換器所在的命名空間爲「xmlns:local」,並如上所示使用它:'Converter = {local:ItemsToColumnConverter}'。 2)'ValueConversion'屬性不是必需的。從[MSDN](http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx):*「...這是一個很好的做法,用ValueConversionAttribute來修飾實現。 ..「*這並不妨礙代碼編譯。它是'ConvertBack(...)'方法的定義不完整(只是一個例子!)。 – gehho 2010-08-30 06:26:06