我把這個Stackpanel與一個網格,並在網格中的多個按鈕,其中包含內容顯示。這些項目是按字母順序排列的,而且我已經手動執行此操作。例如,如果一個遊戲的名稱是「死亡排」,我不得不浪費時間手動移動每個項目,這樣我就可以爲新項目騰出空間。這裏的問題是,是否有一種方法來組織它,以便我可以在代碼之間實現代碼並自動調整? 代碼的外觀: Code Example Image按字母順序排列網格項目
回答
不要使用DataGrid
來佈局的動態內容,而使用與DataTemplates
的ItemsControl
和存儲你的數據收集在ViewModel
,然後使用數據綁定來顯示您的內容。這將允許您更改您的數據收集並適當地更新您的UI。
例子:
一個簡單的類,它保持每場比賽的細節:
public class GameViewModel
{
public string Name { get; set; }
public string ImagePath { get; set; }
}
你的主視圖模型:
public class SortedContentViewModel
{
public ObservableCollection<GameViewModel> GameList { get; set; }
public SortedContentViewModel()
{
GameList = new ObservableCollection<GameViewModel>()
{
new GameViewModel() {Name="Brink", ImagePath = @"Resources/brink.png" },
new GameViewModel() {Name="Bulletstorm", ImagePath = @"Resources/bulletstorm.png" }
};
}
}
和您的XAML:
<UserControl x:Class="Wpf_Playground.Views.SortedContentView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:Wpf_Playground.ViewModels"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
DataContext="{DynamicResource ViewModel}">
<UserControl.Resources>
<vm:SortedContentViewModel x:Key="ViewModel" />
<DataTemplate DataType="{x:Type vm:GameViewModel}">
<Button>
<Grid>
<Image Source="{Binding ImagePath}" Stretch="Fill" />
<Border Background="#66000000" Height="30" VerticalAlignment="Bottom">
<TextBlock Text="{Binding Name}" Margin="10,-2,10,0" VerticalAlignment="Bottom" />
</Border>
</Grid>
</Button>
</DataTemplate>
</UserControl.Resources>
<Grid>
<ItemsControl ItemsSource="{Binding GameList}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
</UserControl>
謝謝,我知道你是怎麼做的,但似乎沒有出現。以下是新代碼:[XAML] http://speedcap.net/sharing/files/a0/5d/a05def47065215562e54aad70e59e56f.png [C#] http://speedcap.net/sharing/files/f0/a0/f0a014aa004bc9b38bb8c7de5c219a9e.png 。在XAML之上,我已經把DataContext =「{Binding RelativeSource = {RelativeSource Self}}」,所以它會引用它自己。 – user1953522 2013-03-26 18:41:32
你的'DataContext'綁定不能工作,你的想法。看看你的大窗口,我敢打賭你會看到一個綁定錯誤。如果你想在後面的代碼中做所有的事情,那麼在你的XAML中擺脫你的''DataContext = ...「',並且只需在你的窗口構造函數中放置'this.DataContext = this;'。 – 2013-03-26 19:00:43
謝謝。我想它是因爲它與表單上的另一個ListView一起工作。 – user1953522 2013-03-26 20:04:04
- 1. 按字母順序排序,然後按字母順序排列
- 2. 按字母順序排列列表項
- 3. 按字母順序排列目錄
- 4. 按字母順序排列
- 5. 按字母順序排列
- 6. 按字母順序排列
- 7. 按字段順序排列+按字母順序排列
- 8. 按字母順序排列PHP排序
- 9. 按字母順序排列項目列表
- 10. 在垂直列中按字母順序排列項目
- 11. 按字母順序排列列表框中的組項目
- 12. jQuery的排序按價格按字母順序排列與
- 13. 按字母順序排列並按單元格顏色排序
- 14. 按字母順序排列的鏈表不按順序排列
- 15. 按字母順序排列ListView上的項目
- 16. 在Django-Admin中按字母順序排列顯示項目
- 17. 按字母順序排列QComboBox項目,無論索引如何
- 18. Zend Framework按字母順序排列的列表,新條目沒有按字母順序排列
- 19. 排序列表中的項目按字母順序排列,而不稱呼
- 20. 按字母順序排序
- 21. 按字母順序排序
- 22. 按字母順序排序
- 23. 按字母順序排序
- 24. 排序按字母順序
- 25. 按字母順序排序
- 26. 按字母順序排序
- 27. 按字母順序排列Wordpress列表
- 28. 按字母順序排列2D列表?
- 29. C:按字母順序排列列表
- 30. 按字母順序排序列表
爲什麼你是否將你的代碼發佈爲.png? – 2013-03-26 16:49:57